diff options
author | Jakub Zelenka <bukka@php.net> | 2017-10-15 19:37:22 +0100 |
---|---|---|
committer | Jakub Zelenka <bukka@php.net> | 2017-10-15 19:37:22 +0100 |
commit | d1f5811ff0c0b49c20a9f540f049873dca30da6b (patch) | |
tree | 1cf665aa08ee7381b1aa5a24d49fcb6f927391d1 /ext/json/json_encoder.c | |
parent | b7b55d955eb69a844129fa735a8bfbdd6ba37495 (diff) | |
parent | 7c556c44a10bfc53c37295626e61bd99dc4f550c (diff) | |
download | php-git-d1f5811ff0c0b49c20a9f540f049873dca30da6b.tar.gz |
Merge branch 'PHP-7.2'
Diffstat (limited to 'ext/json/json_encoder.c')
-rw-r--r-- | ext/json/json_encoder.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/ext/json/json_encoder.c b/ext/json/json_encoder.c index 2c3843fdd2..f128558fbb 100644 --- a/ext/json/json_encoder.c +++ b/ext/json/json_encoder.c @@ -189,8 +189,13 @@ static int php_json_encode_array(smart_str *buf, zval *val, int options, php_jso php_json_pretty_print_char(buf, options, '\n'); php_json_pretty_print_indent(buf, options, encoder); - php_json_escape_string(buf, ZSTR_VAL(key), ZSTR_LEN(key), - options & ~PHP_JSON_NUMERIC_CHECK, encoder); + if (php_json_escape_string(buf, ZSTR_VAL(key), ZSTR_LEN(key), + options & ~PHP_JSON_NUMERIC_CHECK, encoder) == FAILURE && + (options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR) && + buf->s) { + ZSTR_LEN(buf->s) -= 4; + smart_str_appendl(buf, "\"\"", 2); + } } else { if (need_comma) { smart_str_appendc(buf, ','); |