diff options
author | Dmitry Stogov <dmitry@zend.com> | 2014-06-05 16:04:11 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2014-06-05 16:04:11 +0400 |
commit | c1965f58d4dd3970912dcd6a63ccd5860bae1a97 (patch) | |
tree | 15b4a94e8e8405f791438c468ad4eb03f60c4079 /ext/standard/scanf.c | |
parent | 3d87391cc06fe87344536e88ac74ded22b0195cf (diff) | |
download | php-git-c1965f58d4dd3970912dcd6a63ccd5860bae1a97.tar.gz |
Use reference counting instead of zval duplication
Diffstat (limited to 'ext/standard/scanf.c')
-rw-r--r-- | ext/standard/scanf.c | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/ext/standard/scanf.c b/ext/standard/scanf.c index 3eb58e1837..ef3fe2969c 100644 --- a/ext/standard/scanf.c +++ b/ext/standard/scanf.c @@ -742,11 +742,9 @@ literal: if (numVars && objIndex >= argCount) { break; } else if (numVars) { - current = &args[objIndex++]; - 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); + current = Z_REFVAL(args[objIndex++]); + zval_ptr_dtor(current); + ZVAL_LONG(current, (long)(string - baseString) ); } else { add_index_long(return_value, objIndex++, string - baseString); } @@ -863,11 +861,9 @@ literal: if (numVars && objIndex >= argCount) { break; } else if (numVars) { - current = &args[objIndex++]; - 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); + current = Z_REFVAL(args[objIndex++]); + zval_ptr_dtor(current); + ZVAL_STRINGL(current, string, end-string); } else { add_index_stringl(return_value, objIndex++, string, end-string); } @@ -906,9 +902,9 @@ literal: if (numVars && objIndex >= argCount) { break; } else if (numVars) { - current = &args[objIndex++]; - zval_dtor(Z_REFVAL_P(current)); - ZVAL_STRINGL(Z_REFVAL_P(current), string, end-string); + current = Z_REFVAL(args[objIndex++]); + zval_ptr_dtor(current); + ZVAL_STRINGL(current, string, end-string); } else { add_index_stringl(return_value, objIndex++, string, end-string); } @@ -1060,9 +1056,9 @@ addToInt: break; } else if (numVars) { /* change passed value type to string */ - current = &args[objIndex++]; - zval_dtor(Z_REFVAL_P(current)); - ZVAL_STRING(Z_REFVAL_P(current), buf); + current = Z_REFVAL(args[objIndex++]); + zval_ptr_dtor(current); + ZVAL_STRING(current, buf); } else { add_index_string(return_value, objIndex++, buf); } @@ -1070,9 +1066,9 @@ addToInt: if (numVars && objIndex >= argCount) { break; } else if (numVars) { - current = &args[objIndex++]; - zval_dtor(Z_REFVAL_P(current)); - ZVAL_LONG(Z_REFVAL_P(current), value); + current = Z_REFVAL(args[objIndex++]); + zval_ptr_dtor(current); + ZVAL_LONG(current, value); } else { add_index_long(return_value, objIndex++, value); } @@ -1175,9 +1171,9 @@ addToFloat: if (numVars && objIndex >= argCount) { break; } else if (numVars) { - current = &args[objIndex++]; - zval_dtor(Z_REFVAL_P(current)); - ZVAL_DOUBLE(Z_REFVAL_P(current), dvalue); + current = Z_REFVAL(args[objIndex++]); + zval_ptr_dtor(current); + ZVAL_DOUBLE(current, dvalue); } else { add_index_double(return_value, objIndex++, dvalue ); } |