diff options
Diffstat (limited to 'ext/json/json_parser.tab.c')
-rw-r--r-- | ext/json/json_parser.tab.c | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/ext/json/json_parser.tab.c b/ext/json/json_parser.tab.c index 36967bc6b8..15b696b82f 100644 --- a/ext/json/json_parser.tab.c +++ b/ext/json/json_parser.tab.c @@ -1062,121 +1062,121 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, php_json_parser *p { case 3: /* PHP_JSON_T_NUL */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 4: /* PHP_JSON_T_TRUE */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 5: /* PHP_JSON_T_FALSE */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 6: /* PHP_JSON_T_INT */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 7: /* PHP_JSON_T_DOUBLE */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 8: /* PHP_JSON_T_STRING */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 9: /* PHP_JSON_T_ESTRING */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 10: /* PHP_JSON_T_EOI */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 11: /* PHP_JSON_T_ERROR */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 19: /* start */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 20: /* object */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 23: /* members */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 24: /* member */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 25: /* pair */ - { zend_string_release(((*yyvaluep).pair).key); zval_dtor(&((*yyvaluep).pair).val); } + { zend_string_release_ex(((*yyvaluep).pair).key, 0); zval_ptr_dtor_nogc(&((*yyvaluep).pair).val); } break; case 26: /* array */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 29: /* elements */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 30: /* element */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 31: /* key */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 32: /* value */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; case 33: /* errlex */ - { zval_dtor(&((*yyvaluep).value)); } + { zval_ptr_dtor_nogc(&((*yyvaluep).value)); } break; @@ -1856,7 +1856,8 @@ yyreturn: static int php_json_parser_array_create(php_json_parser *parser, zval *array) { - return array_init(array); + array_init(array); + return SUCCESS; } static int php_json_parser_array_append(php_json_parser *parser, zval *array, zval *zvalue) @@ -1868,7 +1869,8 @@ static int php_json_parser_array_append(php_json_parser *parser, zval *array, zv static int php_json_parser_object_create(php_json_parser *parser, zval *object) { if (parser->scanner.options & PHP_JSON_OBJECT_AS_ARRAY) { - return array_init(object); + array_init(object); + return SUCCESS; } else { return object_init(object); } @@ -1883,19 +1885,16 @@ static int php_json_parser_object_update(php_json_parser *parser, zval *object, zval zkey; if (ZSTR_LEN(key) > 0 && ZSTR_VAL(key)[0] == '\0') { parser->scanner.errcode = PHP_JSON_ERROR_INVALID_PROPERTY_NAME; - zend_string_release(key); - zval_dtor(zvalue); - zval_dtor(object); + zend_string_release_ex(key, 0); + zval_ptr_dtor_nogc(zvalue); + zval_ptr_dtor_nogc(object); return FAILURE; } ZVAL_NEW_STR(&zkey, key); zend_std_write_property(object, &zkey, zvalue, NULL); - - if (Z_REFCOUNTED_P(zvalue)) { - Z_DELREF_P(zvalue); - } + Z_TRY_DELREF_P(zvalue); } - zend_string_release(key); + zend_string_release_ex(key, 0); return SUCCESS; } |