Fix json object decoding

This commit is contained in:
Jakub Zelenka 2014-12-12 19:52:45 +00:00
parent c6d0905158
commit 9e5f687957

View file

@ -176,8 +176,12 @@ php_json_error_code php_json_parser_error_code(php_json_parser *parser)
void php_json_parser_object_init(php_json_parser *parser, zval *object) void php_json_parser_object_init(php_json_parser *parser, zval *object)
{ {
TSRMLS_FETCH_FROM_CTX(parser->zts_ctx); TSRMLS_FETCH_FROM_CTX(parser->zts_ctx);
if (parser->scanner.options & PHP_JSON_OBJECT_AS_ARRAY) {
array_init(object);
} else {
object_init(object); object_init(object);
} }
}
void php_json_parser_object_update(php_json_parser *parser, zval *object, zval *zkey, zval *zvalue) void php_json_parser_object_update(php_json_parser *parser, zval *object, zval *zkey, zval *zvalue)
{ {
@ -190,18 +194,17 @@ void php_json_parser_object_update(php_json_parser *parser, zval *object, zval *
} else { } else {
if (key_len == 0) { if (key_len == 0) {
key = "_empty_"; key = "_empty_";
key_len = sizeof("_empty_"); key_len = sizeof("_empty_") - 1;
} }
add_property_zval_ex(object, key, key_len, zvalue TSRMLS_CC); add_property_zval_ex(object, key, key_len, zvalue TSRMLS_CC);
/*
if (Z_REFCOUNTED_P(zvalue)) { if (Z_REFCOUNTED_P(zvalue)) {
Z_DELREF_P(zvalue); Z_DELREF_P(zvalue);
} }
*/
} }
zval_dtor(zkey);
} }
void php_json_parser_array_init(zval *array) void php_json_parser_array_init(zval *array)
{ {
array_init(array); array_init(array);