diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 9af1a6b4756..02ca378bd85 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -2867,7 +2867,7 @@ ZEND_API zend_string* ZEND_FASTCALL zend_string_tolower_ex(zend_string *str, boo if (BLOCKCONV_FOUND()) { zend_string *res = zend_string_alloc(length, persistent); memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char *) ZSTR_VAL(str)); - unsigned char *q = p + (ZSTR_VAL(res) - ZSTR_VAL(str)); + unsigned char *q = (unsigned char*) ZSTR_VAL(res) + (p - (unsigned char*) ZSTR_VAL(str)); /* Lowercase the chunk we already compared. */ BLOCKCONV_INIT_DELTA('a' - 'A'); @@ -2889,7 +2889,7 @@ ZEND_API zend_string* ZEND_FASTCALL zend_string_tolower_ex(zend_string *str, boo zend_string *res = zend_string_alloc(length, persistent); memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char*) ZSTR_VAL(str)); - unsigned char *q = p + (ZSTR_VAL(res) - ZSTR_VAL(str)); + unsigned char *q = (unsigned char*) ZSTR_VAL(res) + (p - (unsigned char*) ZSTR_VAL(str)); while (p < end) { *q++ = zend_tolower_ascii(*p++); } @@ -2916,7 +2916,7 @@ ZEND_API zend_string* ZEND_FASTCALL zend_string_toupper_ex(zend_string *str, boo if (BLOCKCONV_FOUND()) { zend_string *res = zend_string_alloc(length, persistent); memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char *) ZSTR_VAL(str)); - unsigned char *q = p + (ZSTR_VAL(res) - ZSTR_VAL(str)); + unsigned char *q = (unsigned char *) ZSTR_VAL(res) + (p - (unsigned char *) ZSTR_VAL(str)); /* Uppercase the chunk we already compared. */ BLOCKCONV_INIT_DELTA('A' - 'a'); @@ -2938,7 +2938,7 @@ ZEND_API zend_string* ZEND_FASTCALL zend_string_toupper_ex(zend_string *str, boo zend_string *res = zend_string_alloc(length, persistent); memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char*) ZSTR_VAL(str)); - unsigned char *q = p + (ZSTR_VAL(res) - ZSTR_VAL(str)); + unsigned char *q = (unsigned char *) ZSTR_VAL(res) + (p - (unsigned char *) ZSTR_VAL(str)); while (p < end) { *q++ = zend_toupper_ascii(*p++); }