From 7ba43ea05241ad474d40ab199c6a710e21048cd5 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 16 Sep 2014 22:15:27 +0200 Subject: [PATCH] fix signed/unsigned mismatch --- ext/standard/string.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/ext/standard/string.c b/ext/standard/string.c index 0c41249473..7b18acf83c 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -780,7 +780,7 @@ static inline int php_charmask(unsigned char *input, size_t len, char *mask TSRM */ PHPAPI char *php_trim(char *c, size_t len, char *what, size_t what_len, zval *return_value, int mode TSRMLS_DC) { - register zend_long i; + register size_t i; size_t trimmed = 0; char mask[256]; @@ -802,12 +802,15 @@ PHPAPI char *php_trim(char *c, size_t len, char *what, size_t what_len, zval *re c += trimmed; } if (mode & 2) { - for (i = len - 1; i >= 0; i--) { - if (mask[(unsigned char)c[i]]) { - len--; - } else { - break; - } + if (len > 0) { + i = len - 1; + do { + if (mask[(unsigned char)c[i]]) { + len--; + } else { + break; + } + } while (i-- != 0); } } -- 2.50.1