Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions ext/json/json_parser.y
Original file line number Diff line number Diff line change
Expand Up @@ -280,13 +280,16 @@ static int php_json_parser_object_update_validate(php_json_parser *parser, zval
static int php_json_yylex(union YYSTYPE *value, php_json_parser *parser)
{
int token = php_json_scan(&parser->scanner);
value->value = parser->scanner.value;

if (parser->methods.array_create == php_json_parser_array_create_validate
bool validate = parser->methods.array_create == php_json_parser_array_create_validate
&& parser->methods.array_append == php_json_parser_array_append_validate
&& parser->methods.object_create == php_json_parser_object_create_validate
&& parser->methods.object_update == php_json_parser_object_update_validate) {
&& parser->methods.object_update == php_json_parser_object_update_validate;

if (validate) {
zval_ptr_dtor_str(&(parser->scanner.value));
} else {
value->value = parser->scanner.value;
}

return token;
Expand Down