From: Xinchen Hui Date: Sun, 23 Feb 2014 10:48:15 +0000 (+0800) Subject: Fixed inproper IS_REF handling in ext/standard/tests/strings/bug27295.phpt X-Git-Tag: POST_PHPNG_MERGE~412^2~576 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6a856d4aa94db68942ac489abaf621dd387d9753;p=php Fixed inproper IS_REF handling in ext/standard/tests/strings/bug27295.phpt --- diff --git a/ext/standard/scanf.c b/ext/standard/scanf.c index 2e41a4f8fd..4fd149804e 100644 --- a/ext/standard/scanf.c +++ b/ext/standard/scanf.c @@ -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 ); }