summaryrefslogtreecommitdiff
path: root/ext/json/json_parser.y
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-07-05 15:07:16 +0300
committerDmitry Stogov <dmitry@zend.com>2018-07-05 15:07:16 +0300
commit918a9f09f8c2bed8c1799c92a9d4cfd88d43488a (patch)
tree9f6dd94d6d1c7ab2db28041a3fa9777b0d4f05ff /ext/json/json_parser.y
parent3780b027ddce2e7dfb62228c89162480d8fbd5ff (diff)
downloadphp-git-918a9f09f8c2bed8c1799c92a9d4cfd88d43488a.tar.gz
Use zval_ptr_dtor_nogc() in JSON parser (it can't produce circular data structures)
Diffstat (limited to 'ext/json/json_parser.y')
-rw-r--r--ext/json/json_parser.y8
1 files changed, 4 insertions, 4 deletions
diff --git a/ext/json/json_parser.y b/ext/json/json_parser.y
index 489cec1a5e..dfbec3cd36 100644
--- a/ext/json/json_parser.y
+++ b/ext/json/json_parser.y
@@ -74,8 +74,8 @@ int json_yydebug = 1;
%type <value> members member elements element
%type <pair> pair
-%destructor { zval_dtor(&$$); } <value>
-%destructor { zend_string_release_ex($$.key, 0); zval_dtor(&$$.val); } <pair>
+%destructor { zval_ptr_dtor_nogc(&$$); } <value>
+%destructor { zend_string_release_ex($$.key, 0); zval_ptr_dtor_nogc(&$$.val); } <pair>
%code {
static int php_json_yylex(union YYSTYPE *value, php_json_parser *parser);
@@ -278,8 +278,8 @@ static int php_json_parser_object_update(php_json_parser *parser, zval *object,
if (ZSTR_LEN(key) > 0 && ZSTR_VAL(key)[0] == '\0') {
parser->scanner.errcode = PHP_JSON_ERROR_INVALID_PROPERTY_NAME;
zend_string_release_ex(key, 0);
- zval_dtor(zvalue);
- zval_dtor(object);
+ zval_ptr_dtor_nogc(zvalue);
+ zval_ptr_dtor_nogc(object);
return FAILURE;
}
ZVAL_NEW_STR(&zkey, key);