1
0
mirror of https://github.com/php/php-src.git synced 2026-04-04 22:52:40 +02:00

Fixed inproper IS_REF handling in ext/standard/tests/strings/bug27295.phpt

This commit is contained in:
Xinchen Hui
2014-02-23 18:48:15 +08:00
parent f21eb59cda
commit 6a856d4aa9

View File

@@ -742,15 +742,11 @@ literal:
if (numVars && objIndex >= argCount) {
break;
} else if (numVars) {
zend_uint refcount;
current = &args[objIndex++];
refcount = Z_REFCOUNT_P(current);
zval_dtor(current);
ZVAL_LONG(current, (long)(string - baseString) );
zval_dtor(Z_REFVAL_P(current));
ZVAL_LONG(Z_REFVAL_P(current), (long)(string - baseString) );
// Z_SET_REFCOUNT_P(current, refcount);
//??? Z_SET_ISREF_P(current);
ZVAL_NEW_REF(current, current);
} else {
add_index_long(return_value, objIndex++, string - baseString);
}
@@ -867,15 +863,11 @@ literal:
if (numVars && objIndex >= argCount) {
break;
} else if (numVars) {
zend_uint refcount;
current = &args[objIndex++];
refcount = Z_REFCOUNT_P(current);
zval_dtor( current );
ZVAL_STRINGL( current, string, end-string);
Z_SET_REFCOUNT_P(current, refcount);
zval_dtor(Z_REFVAL_P(current));
ZVAL_STRINGL(Z_REFVAL_P(current), string, end-string);
// Z_SET_REFCOUNT_P(current, refcount);
//??? Z_SET_ISREF_PP(current);
ZVAL_NEW_REF(current, current);
} else {
add_index_stringl(return_value, objIndex++, string, end-string, 1);
}
@@ -915,8 +907,8 @@ literal:
break;
} else if (numVars) {
current = &args[objIndex++];
zval_dtor( current );
ZVAL_STRINGL( current, string, end-string);
zval_dtor(Z_REFVAL_P(current));
ZVAL_STRINGL(Z_REFVAL_P(current), string, end-string);
} else {
add_index_stringl(return_value, objIndex++, string, end-string, 1);
}
@@ -1069,8 +1061,8 @@ addToInt:
} else if (numVars) {
/* change passed value type to string */
current = &args[objIndex++];
zval_dtor(current);
ZVAL_STRING(current, buf);
zval_dtor(Z_REFVAL_P(current));
ZVAL_STRING(Z_REFVAL_P(current), buf);
} else {
add_index_string(return_value, objIndex++, buf, 1);
}
@@ -1079,8 +1071,8 @@ addToInt:
break;
} else if (numVars) {
current = &args[objIndex++];
zval_dtor(current);
ZVAL_LONG(current, value);
zval_dtor(Z_REFVAL_P(current));
ZVAL_LONG(Z_REFVAL_P(current), value);
} else {
add_index_long(return_value, objIndex++, value);
}
@@ -1184,8 +1176,8 @@ addToFloat:
break;
} else if (numVars) {
current = &args[objIndex++];
zval_dtor(current);
ZVAL_DOUBLE(current, dvalue);
zval_dtor(Z_REFVAL_P(current));
ZVAL_DOUBLE(Z_REFVAL_P(current), dvalue);
} else {
add_index_double(return_value, objIndex++, dvalue );
}