summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_execute.c4
-rw-r--r--Zend/zend_operators.h4
-rw-r--r--Zend/zend_vm_def.h2
-rw-r--r--Zend/zend_vm_execute.h8
-rw-r--r--ext/date/php_date.c4
-rw-r--r--ext/standard/array.c14
-rw-r--r--ext/standard/file.c2
-rw-r--r--ext/standard/formatted_print.c14
-rw-r--r--ext/standard/http_fopen_wrapper.c4
-rw-r--r--ext/standard/pack.c55
-rw-r--r--ext/standard/scanf.c14
-rw-r--r--ext/standard/string.c19
12 files changed, 73 insertions, 71 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 6bf0cdf984..54397153c1 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -1177,7 +1177,7 @@ convert_to_array:
break;
}
- offset = zval_get_long(dim);
+ offset = zval_get_int(dim);
} else {
offset = Z_IVAL_P(dim);
}
@@ -1305,7 +1305,7 @@ static zend_always_inline void zend_fetch_dimension_address_read(zval *result, z
break;
}
- offset = zval_get_long(dim);
+ offset = zval_get_int(dim);
} else {
offset = Z_IVAL_P(dim);
}
diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h
index b8e7c0ed2f..3ed9b9fb4d 100644
--- a/Zend/zend_operators.h
+++ b/Zend/zend_operators.h
@@ -348,7 +348,7 @@ ZEND_API zend_int_t _zval_get_int_func(zval *op TSRMLS_DC);
ZEND_API double _zval_get_double_func(zval *op TSRMLS_DC);
ZEND_API zend_string *_zval_get_string_func(zval *op TSRMLS_DC);
-static zend_always_inline zend_int_t _zval_get_long(zval *op TSRMLS_DC) {
+static zend_always_inline zend_int_t _zval_get_int(zval *op TSRMLS_DC) {
return Z_TYPE_P(op) == IS_INT ? Z_IVAL_P(op) : _zval_get_int_func(op TSRMLS_CC);
}
static zend_always_inline double _zval_get_double(zval *op TSRMLS_DC) {
@@ -358,7 +358,7 @@ static zend_always_inline zend_string *_zval_get_string(zval *op TSRMLS_DC) {
return Z_TYPE_P(op) == IS_STRING ? STR_COPY(Z_STR_P(op)) : _zval_get_string_func(op TSRMLS_CC);
}
-#define zval_get_long(op) _zval_get_long((op) TSRMLS_CC)
+#define zval_get_int(op) _zval_get_int((op) TSRMLS_CC)
#define zval_get_double(op) _zval_get_double((op) TSRMLS_CC)
#define zval_get_string(op) _zval_get_string((op) TSRMLS_CC)
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 29e93371a0..be01accf6a 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -4053,7 +4053,7 @@ ZEND_VM_HANDLER(21, ZEND_CAST, CONST|TMP|VAR|CV, ANY)
ZVAL_BOOL(result, zend_is_true(expr TSRMLS_CC));
break;
case IS_INT:
- ZVAL_INT(result, zval_get_long(expr));
+ ZVAL_INT(result, zval_get_int(expr));
break;
case IS_DOUBLE:
ZVAL_DOUBLE(result, zval_get_double(expr));
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 4a3b173a30..9bc2c13c30 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -2869,7 +2869,7 @@ static int ZEND_FASTCALL ZEND_CAST_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
ZVAL_BOOL(result, zend_is_true(expr TSRMLS_CC));
break;
case IS_INT:
- ZVAL_INT(result, zval_get_long(expr));
+ ZVAL_INT(result, zval_get_int(expr));
break;
case IS_DOUBLE:
ZVAL_DOUBLE(result, zval_get_double(expr));
@@ -8385,7 +8385,7 @@ static int ZEND_FASTCALL ZEND_CAST_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
ZVAL_BOOL(result, zend_is_true(expr TSRMLS_CC));
break;
case IS_INT:
- ZVAL_INT(result, zval_get_long(expr));
+ ZVAL_INT(result, zval_get_int(expr));
break;
case IS_DOUBLE:
ZVAL_DOUBLE(result, zval_get_double(expr));
@@ -13824,7 +13824,7 @@ static int ZEND_FASTCALL ZEND_CAST_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
ZVAL_BOOL(result, zend_is_true(expr TSRMLS_CC));
break;
case IS_INT:
- ZVAL_INT(result, zval_get_long(expr));
+ ZVAL_INT(result, zval_get_int(expr));
break;
case IS_DOUBLE:
ZVAL_DOUBLE(result, zval_get_double(expr));
@@ -31184,7 +31184,7 @@ static int ZEND_FASTCALL ZEND_CAST_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
ZVAL_BOOL(result, zend_is_true(expr TSRMLS_CC));
break;
case IS_INT:
- ZVAL_INT(result, zval_get_long(expr));
+ ZVAL_INT(result, zval_get_int(expr));
break;
case IS_DOUBLE:
ZVAL_DOUBLE(result, zval_get_double(expr));
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index 168fe9c920..63cdc511ab 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -4062,7 +4062,7 @@ void date_interval_write_property(zval *object, zval *member, zval *value, void
#define SET_VALUE_FROM_STRUCT(n,m) \
if (strcmp(Z_STRVAL_P(member), m) == 0) { \
- obj->diff->n = zval_get_long(value); \
+ obj->diff->n = zval_get_int(value); \
break; \
}
@@ -4119,7 +4119,7 @@ static int php_date_interval_initialize_from_hash(zval **return_value, php_inter
do { \
zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
if (z_arg) { \
- (*intobj)->diff->member = (itype)zval_get_long(z_arg); \
+ (*intobj)->diff->member = (itype)zval_get_int(z_arg); \
} else { \
(*intobj)->diff->member = (itype)def; \
} \
diff --git a/ext/standard/array.c b/ext/standard/array.c
index b04509a855..b420dfb307 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -203,7 +203,7 @@ static int php_array_key_compare(const void *a, const void *b TSRMLS_DC) /* {{{
return ZEND_NORMALIZE_BOOL(Z_DVAL(result));
}
- return ZEND_NORMALIZE_BOOL(zval_get_long(&result));
+ return ZEND_NORMALIZE_BOOL(zval_get_int(&result));
}
/* }}} */
@@ -334,7 +334,7 @@ PHP_FUNCTION(count)
if (Z_OBJ_HT_P(array)->get_class_entry && instanceof_function(Z_OBJCE_P(array), spl_ce_Countable TSRMLS_CC)) {
zend_call_method_with_0_params(array, NULL, NULL, "count", &retval);
if (Z_TYPE(retval) != IS_UNDEF) {
- RETVAL_INT(zval_get_long(&retval));
+ RETVAL_INT(zval_get_int(&retval));
zval_ptr_dtor(&retval);
}
return;
@@ -384,7 +384,7 @@ static int php_array_data_compare(const void *a, const void *b TSRMLS_DC) /* {{{
return ZEND_NORMALIZE_BOOL(Z_DVAL(result));
}
- return ZEND_NORMALIZE_BOOL(zval_get_long(&result));
+ return ZEND_NORMALIZE_BOOL(zval_get_int(&result));
}
/* }}} */
@@ -557,7 +557,7 @@ static int php_array_user_compare(const void *a, const void *b TSRMLS_DC) /* {{{
BG(user_compare_fci).retval = &retval;
BG(user_compare_fci).no_separation = 0;
if (zend_call_function(&BG(user_compare_fci), &BG(user_compare_fci_cache) TSRMLS_CC) == SUCCESS && Z_TYPE(retval) != IS_UNDEF) {
- long ret = zval_get_long(&retval);
+ long ret = zval_get_int(&retval);
zval_ptr_dtor(&retval);
zval_ptr_dtor(&args[1]);
zval_ptr_dtor(&args[0]);
@@ -719,7 +719,7 @@ static int php_array_user_key_compare(const void *a, const void *b TSRMLS_DC) /*
BG(user_compare_fci).retval = &retval;
BG(user_compare_fci).no_separation = 0;
if (zend_call_function(&BG(user_compare_fci), &BG(user_compare_fci_cache) TSRMLS_CC) == SUCCESS && Z_TYPE(retval) != IS_UNDEF) {
- result = zval_get_long(&retval);
+ result = zval_get_int(&retval);
zval_ptr_dtor(&retval);
} else {
result = 0;
@@ -2251,7 +2251,7 @@ PHP_FUNCTION(array_slice)
if (ZEND_NUM_ARGS() < 3 || Z_TYPE_P(z_length) == IS_NULL) {
length = num_in;
} else {
- length = zval_get_long(z_length);
+ length = zval_get_int(z_length);
}
/* Clamp the offset.. */
@@ -3061,7 +3061,7 @@ static int zval_user_compare(zval *a, zval *b TSRMLS_DC) /* {{{ */
BG(user_compare_fci).no_separation = 0;
if (zend_call_function(&BG(user_compare_fci), &BG(user_compare_fci_cache) TSRMLS_CC) == SUCCESS && Z_TYPE(retval) != IS_UNDEF) {
- long ret = zval_get_long(&retval);
+ long ret = zval_get_int(&retval);
zval_ptr_dtor(&retval);
return ret < 0 ? -1 : ret > 0 ? 1 : 0;;
} else {
diff --git a/ext/standard/file.c b/ext/standard/file.c
index c6a80df005..c58db9fd64 100644
--- a/ext/standard/file.c
+++ b/ext/standard/file.c
@@ -2015,7 +2015,7 @@ PHP_FUNCTION(fgetcsv)
}
if (len_zv != NULL && Z_TYPE_P(len_zv) != IS_NULL) {
- len = zval_get_long(len_zv);
+ len = zval_get_int(len_zv);
if (len < 0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Length parameter may not be negative");
RETURN_FALSE;
diff --git a/ext/standard/formatted_print.c b/ext/standard/formatted_print.c
index 4109da1718..3c570d32ee 100644
--- a/ext/standard/formatted_print.c
+++ b/ext/standard/formatted_print.c
@@ -567,14 +567,14 @@ php_formatted_print(int param_count, int use_array, int format_offset TSRMLS_DC)
case 'd':
php_sprintf_appendint(&result, &outpos,
- zval_get_long(tmp),
+ zval_get_int(tmp),
width, padding, alignment,
always_sign);
break;
case 'u':
php_sprintf_appenduint(&result, &outpos,
- zval_get_long(tmp),
+ zval_get_int(tmp),
width, padding, alignment);
break;
@@ -594,33 +594,33 @@ php_formatted_print(int param_count, int use_array, int format_offset TSRMLS_DC)
case 'c':
php_sprintf_appendchar(&result, &outpos,
- (char) zval_get_long(tmp) TSRMLS_CC);
+ (char) zval_get_int(tmp) TSRMLS_CC);
break;
case 'o':
php_sprintf_append2n(&result, &outpos,
- zval_get_long(tmp),
+ zval_get_int(tmp),
width, padding, alignment, 3,
hexchars, expprec);
break;
case 'x':
php_sprintf_append2n(&result, &outpos,
- zval_get_long(tmp),
+ zval_get_int(tmp),
width, padding, alignment, 4,
hexchars, expprec);
break;
case 'X':
php_sprintf_append2n(&result, &outpos,
- zval_get_long(tmp),
+ zval_get_int(tmp),
width, padding, alignment, 4,
HEXCHARS, expprec);
break;
case 'b':
php_sprintf_append2n(&result, &outpos,
- zval_get_long(tmp),
+ zval_get_int(tmp),
width, padding, alignment, 1,
hexchars, expprec);
break;
diff --git a/ext/standard/http_fopen_wrapper.c b/ext/standard/http_fopen_wrapper.c
index ffec818037..7e8ddd51d4 100644
--- a/ext/standard/http_fopen_wrapper.c
+++ b/ext/standard/http_fopen_wrapper.c
@@ -346,7 +346,7 @@ finish:
php_stream_notify_info(context, PHP_STREAM_NOTIFY_CONNECT, NULL, 0);
if (header_init && context && (tmpzval = php_stream_context_get_option(context, "http", "max_redirects")) != NULL) {
- redirect_max = zval_get_long(tmpzval);
+ redirect_max = zval_get_int(tmpzval);
}
if (context && (tmpzval = php_stream_context_get_option(context, "http", "method")) != NULL) {
@@ -731,7 +731,7 @@ finish:
if (!strncasecmp(http_header_line, "Location: ", 10)) {
if (context && (tmpzval = php_stream_context_get_option(context, "http", "follow_location")) != NULL) {
- follow_location = zval_get_long(tmpzval);
+ follow_location = zval_get_int(tmpzval);
} else if (!(response_code >= 300 && response_code < 304 || 307 == response_code || 308 == response_code)) {
/* we shouldn't redirect automatically
if follow_location isn't set and response_code not in (300, 301, 302, 303 and 307)
diff --git a/ext/standard/pack.c b/ext/standard/pack.c
index 90fef0f855..613a58b5fd 100644
--- a/ext/standard/pack.c
+++ b/ext/standard/pack.c
@@ -84,7 +84,7 @@ static int little_endian_long_map[4];
/* {{{ php_pack
*/
-static void php_pack(zval *val, int size, int *map, char *output)
+static void php_pack(zval *val, php_size_t size, int *map, char *output)
{
int i;
char *v;
@@ -480,9 +480,9 @@ PHP_FUNCTION(pack)
/* {{{ php_unpack
*/
-static long php_unpack(char *data, int size, int issigned, int *map)
+static php_int_t php_unpack(char *data, php_size_t size, int issigned, int *map)
{
- long result;
+ php_int_t result;
char *cresult = (char *) &result;
int i;
@@ -512,19 +512,20 @@ static long php_unpack(char *data, int size, int issigned, int *map)
Unpack binary string into named array elements according to format argument */
PHP_FUNCTION(unpack)
{
- char *format, *input, *formatarg, *inputarg;
- int formatlen, formatarg_len, inputarg_len;
- int inputpos, inputlen, i;
+ char *format, *input;
+ zend_string *formatarg, *inputarg;
+ php_size_t formatlen, inputpos, inputlen;
+ int i;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &formatarg, &formatarg_len,
- &inputarg, &inputarg_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS", &formatarg,
+ &inputarg) == FAILURE) {
return;
}
- format = formatarg;
- formatlen = formatarg_len;
- input = inputarg;
- inputlen = inputarg_len;
+ format = formatarg->val;
+ formatlen = formatarg->len;
+ input = inputarg->val;
+ inputlen = inputarg->len;
inputpos = 0;
array_init(return_value);
@@ -656,11 +657,11 @@ PHP_FUNCTION(unpack)
inputpos = 0;
}
- if ((inputpos + size) <= inputlen) {
+ if ((size >=0 && (inputpos + size) <= inputlen) || (size < 0 && -size <= (inputlen - inputpos))) {
switch ((int) type) {
case 'a': {
/* a will not strip any trailing whitespace or null padding */
- int len = inputlen - inputpos; /* Remaining string */
+ php_size_t len = inputlen - inputpos; /* Remaining string */
/* If size was given take minimum of len and size */
if ((size >= 0) && (len > size)) {
@@ -675,7 +676,7 @@ PHP_FUNCTION(unpack)
case 'A': {
/* A will strip any trailing whitespace */
char padn = '\0'; char pads = ' '; char padt = '\t'; char padc = '\r'; char padl = '\n';
- int len = inputlen - inputpos; /* Remaining string */
+ php_size_t len = inputlen - inputpos; /* Remaining string */
/* If size was given take minimum of len and size */
if ((size >= 0) && (len > size)) {
@@ -702,7 +703,7 @@ PHP_FUNCTION(unpack)
case 'Z': {
/* Z will strip everything after the first null character */
char pad = '\0';
- int s,
+ php_size_t s,
len = inputlen - inputpos; /* Remaining string */
/* If size was given take minimum of len and size */
@@ -726,11 +727,11 @@ PHP_FUNCTION(unpack)
case 'h':
case 'H': {
- int len = (inputlen - inputpos) * 2; /* Remaining */
+ php_size_t len = (inputlen - inputpos) * 2; /* Remaining */
int nibbleshift = (type == 'h') ? 0 : 4;
int first = 1;
char *buf;
- int ipos, opos;
+ php_size_t ipos, opos;
/* If size was given take minimum of len and size */
if (size >= 0 && len > (size * 2)) {
@@ -770,7 +771,7 @@ PHP_FUNCTION(unpack)
case 'c':
case 'C': {
int issigned = (type == 'c') ? (input[inputpos] & 0x80) : 0;
- long v = php_unpack(&input[inputpos], 1, issigned, byte_map);
+ php_int_t v = php_unpack(&input[inputpos], 1, issigned, byte_map);
add_assoc_int(return_value, n, v);
break;
}
@@ -779,7 +780,7 @@ PHP_FUNCTION(unpack)
case 'S':
case 'n':
case 'v': {
- long v;
+ php_int_t v;
int issigned = 0;
int *map = machine_endian_short_map;
@@ -798,7 +799,7 @@ PHP_FUNCTION(unpack)
case 'i':
case 'I': {
- long v;
+ php_int_t v;
int issigned = 0;
if (type == 'i') {
@@ -816,7 +817,7 @@ PHP_FUNCTION(unpack)
case 'V': {
int issigned = 0;
int *map = machine_endian_long_map;
- long v = 0;
+ php_int_t v = 0;
if (type == 'l' || type == 'L') {
issigned = input[inputpos + (machine_little_endian ? 3 : 0)] & 0x80;
@@ -828,12 +829,12 @@ PHP_FUNCTION(unpack)
map = little_endian_long_map;
}
- if (sizeof(long) > 4 && issigned) {
+ if (SIZEOF_ZEND_INT > 4 && issigned) {
v = ~INT_MAX;
}
v |= php_unpack(&input[inputpos], 4, issigned, map);
- if (sizeof(long) > 4) {
+ if (SIZEOF_ZEND_INT > 4) {
if (type == 'l') {
v = (signed int) v;
} else {
@@ -903,8 +904,10 @@ PHP_FUNCTION(unpack)
}
}
- formatlen--; /* Skip '/' separator, does no harm if inputlen == 0 */
- format++;
+ if (formatlen > 0) {
+ formatlen--; /* Skip '/' separator, does no harm if inputlen == 0 */
+ format++;
+ }
}
}
/* }}} */
diff --git a/ext/standard/scanf.c b/ext/standard/scanf.c
index 626a52490b..815d7c7290 100644
--- a/ext/standard/scanf.c
+++ b/ext/standard/scanf.c
@@ -356,7 +356,7 @@ PHPAPI int ValidateFormat(char *format, int numVars, int *totalSubs)
* must not be a mixture of XPG3 specs and non-XPG3 specs
* in the same format string.
*/
- value = strtoul(format-1, &end, 10);
+ value = ZEND_STRTOUI(format-1, &end, 10);
if (*end != '$') {
goto notXpg;
}
@@ -403,7 +403,7 @@ xpgCheckDone:
* Parse any width specifier.
*/
if (isdigit(UCHAR(*ch))) {
- value = strtoul(format-1, &format, 10);
+ value = ZEND_STRTOUI(format-1, &format, 10);
flags |= SCAN_WIDTH;
ch = format++;
}
@@ -708,7 +708,7 @@ literal:
flags |= SCAN_SUPPRESS;
ch = format++;
} else if ( isdigit(UCHAR(*ch))) {
- value = strtoul(format-1, &end, 10);
+ value = ZEND_STRTOUI(format-1, &end, 10);
if (*end == '$') {
format = end+1;
ch = format++;
@@ -720,7 +720,7 @@ literal:
* Parse any width specifier.
*/
if ( isdigit(UCHAR(*ch))) {
- width = strtoul(format-1, &format, 10);
+ width = ZEND_STRTOUI(format-1, &format, 10);
ch = format++;
} else {
width = 0;
@@ -761,7 +761,7 @@ literal:
case 'i':
op = 'i';
base = 0;
- fn = (php_int_t(*)())ZEND_STRTOI_PTR;
+ fn = (php_int_t (*)())ZEND_STRTOI_PTR;
break;
case 'o':
op = 'i';
@@ -778,7 +778,7 @@ literal:
op = 'i';
base = 10;
flags |= SCAN_UNSIGNED;
- fn = (php_int_t (*)())ZEND_STRTOI_PTR;
+ fn = (php_int_t (*)())ZEND_STRTOUI_PTR;
break;
case 'f':
@@ -1051,7 +1051,7 @@ addToInt:
*end = '\0';
value = (php_int_t) (*fn)(buf, NULL, base);
if ((flags & SCAN_UNSIGNED) && (value < 0)) {
- snprintf(buf, sizeof(buf), "%lu", value); /* INTL: ISO digit */
+ snprintf(buf, sizeof(buf), ZEND_UINT_FMT, value); /* INTL: ISO digit */
if (numVars && objIndex >= argCount) {
break;
} else if (numVars) {
diff --git a/ext/standard/string.c b/ext/standard/string.c
index 05704cbd2a..c8205c4ad2 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -524,10 +524,10 @@ PHP_MINIT_FUNCTION(nl_langinfo)
Query language and locale information */
PHP_FUNCTION(nl_langinfo)
{
- long item;
+ php_int_t item;
char *value;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &item) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "i", &item) == FAILURE) {
return;
}
@@ -712,15 +712,14 @@ PHP_FUNCTION(nl_langinfo)
Compares two strings using the current locale */
PHP_FUNCTION(strcoll)
{
- char *s1, *s2;
- int s1len, s2len;
+ zend_string *s1, *s2;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &s1, &s1len, &s2, &s2len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS", &s1, &s2) == FAILURE) {
return;
}
- RETURN_INT(strcoll((const char *) s1,
- (const char *) s2));
+ RETURN_INT(strcoll((const char *) s1->val,
+ (const char *) s2->val));
}
/* }}} */
#endif
@@ -2331,7 +2330,7 @@ PHP_FUNCTION(substr_replace)
if (argc > 3) {
if (Z_TYPE_P(len) != IS_ARRAY) {
- l = zval_get_long(len);
+ l = zval_get_int(len);
}
} else {
if (Z_TYPE_P(str) != IS_ARRAY) {
@@ -2456,7 +2455,7 @@ PHP_FUNCTION(substr_replace)
if (Z_TYPE_P(from) == IS_ARRAY) {
if (NULL != (tmp_from = zend_hash_get_current_data_ex(Z_ARRVAL_P(from), &pos_from))) {
- f = zval_get_long(tmp_from);
+ f = zval_get_int(tmp_from);
if (f < 0) {
f = Z_STRSIZE_P(orig_str) + f;
@@ -2484,7 +2483,7 @@ PHP_FUNCTION(substr_replace)
if (argc > 3 && Z_TYPE_P(len) == IS_ARRAY) {
if (NULL != (tmp_len = zend_hash_get_current_data_ex(Z_ARRVAL_P(len), &pos_len))) {
- l = zval_get_long(tmp_len);
+ l = zval_get_int(tmp_len);
zend_hash_move_forward_ex(Z_ARRVAL_P(len), &pos_len);
} else {
l = Z_STRSIZE_P(orig_str);