diff options
| author | Jakub Zelenka <bukka@php.net> | 2017-08-06 17:22:03 +0100 |
|---|---|---|
| committer | Jakub Zelenka <bukka@php.net> | 2017-08-06 17:22:03 +0100 |
| commit | 17b39f1216bf213838c7975d266808d4bc7ffb4c (patch) | |
| tree | cedf079ac9f3118c5cda77226977f22f8a03d742 | |
| parent | 513b0093c2b480bb752fb354012f42c446769486 (diff) | |
| parent | 41d7621f48d78034755ccd540ade850eedc838c6 (diff) | |
| download | php-git-17b39f1216bf213838c7975d266808d4bc7ffb4c.tar.gz | |
Merge branch 'PHP-7.2'
| -rw-r--r-- | ext/json/json_scanner.c | 1 | ||||
| -rw-r--r-- | ext/json/json_scanner.re | 1 | ||||
| -rw-r--r-- | ext/json/tests/json_decode_invalid_utf8.phpt | 21 |
3 files changed, 22 insertions, 1 deletions
diff --git a/ext/json/json_scanner.c b/ext/json/json_scanner.c index 462a99d013..786f3027d9 100644 --- a/ext/json/json_scanner.c +++ b/ext/json/json_scanner.c @@ -292,6 +292,7 @@ yy14: { s->str_start = s->cursor; s->str_esc = 0; + s->utf8_invalid_count = 0; PHP_JSON_CONDITION_SET_AND_GOTO(STR_P1); } yy16: diff --git a/ext/json/json_scanner.re b/ext/json/json_scanner.re index d26e035481..e87790ac76 100644 --- a/ext/json/json_scanner.re +++ b/ext/json/json_scanner.re @@ -209,6 +209,7 @@ std: <JS>["] { s->str_start = s->cursor; s->str_esc = 0; + s->utf8_invalid_count = 0; PHP_JSON_CONDITION_SET_AND_GOTO(STR_P1); } <JS>CTRL { diff --git a/ext/json/tests/json_decode_invalid_utf8.phpt b/ext/json/tests/json_decode_invalid_utf8.phpt index 725fe9be96..d92f785424 100644 --- a/ext/json/tests/json_decode_invalid_utf8.phpt +++ b/ext/json/tests/json_decode_invalid_utf8.phpt @@ -9,11 +9,17 @@ if (!extension_loaded("json")) print "skip"; function json_decode_invalid_utf8($str) { var_dump(json_decode($str)); var_dump(json_decode($str, true, 512, JSON_INVALID_UTF8_IGNORE)); - var_dump(bin2hex(json_decode($str, true, 512, JSON_INVALID_UTF8_SUBSTITUTE))); + $json = json_decode($str, true, 512, JSON_INVALID_UTF8_SUBSTITUTE); + if (is_array($json)) { + var_dump(array_map(function($item) { return bin2hex($item); }, $json)); + } else { + var_dump(bin2hex($json)); + } } json_decode_invalid_utf8("\"a\xb0b\""); json_decode_invalid_utf8("\"a\xd0\xf2b\""); json_decode_invalid_utf8("\"\x61\xf0\x80\x80\x41\""); +json_decode_invalid_utf8("[\"\xc1\xc1\",\"a\"]"); echo "Done\n"; ?> --EXPECT-- @@ -26,4 +32,17 @@ string(16) "61efbfbdefbfbd62" NULL string(2) "aA" string(22) "61efbfbdefbfbdefbfbd41" +NULL +array(2) { + [0]=> + string(0) "" + [1]=> + string(1) "a" +} +array(2) { + [0]=> + string(12) "efbfbdefbfbd" + [1]=> + string(2) "61" +} Done |
