iliaa Mon, 17 Oct 2011 23:51:25 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=318178
Log: Fixed bug #55543 (json_encode() with JSON_NUMERIC_CHECK fails on objects with numeric string properties) Bug: https://bugs.php.net/55543 (Open) json_encode with JSON_NUMERIC_CHECK fails on objects with numeric string props Changed paths: U php/php-src/branches/PHP_5_3/ext/json/json.c A php/php-src/branches/PHP_5_3/ext/json/tests/bug55543.phpt U php/php-src/branches/PHP_5_4/ext/json/json.c A php/php-src/branches/PHP_5_4/ext/json/tests/bug55543.phpt U php/php-src/trunk/ext/json/json.c A php/php-src/trunk/ext/json/tests/bug55543.phpt Modified: php/php-src/branches/PHP_5_3/ext/json/json.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/json/json.c 2011-10-17 22:13:28 UTC (rev 318177) +++ php/php-src/branches/PHP_5_3/ext/json/json.c 2011-10-17 23:51:25 UTC (rev 318178) @@ -238,7 +238,7 @@ need_comma = 1; } - json_escape_string(buf, key, key_len - 1, options TSRMLS_CC); + json_escape_string(buf, key, key_len - 1, options & ~PHP_JSON_NUMERIC_CHECK TSRMLS_CC); smart_str_appendc(buf, ':'); php_json_encode(buf, *data, options TSRMLS_CC); Added: php/php-src/branches/PHP_5_3/ext/json/tests/bug55543.phpt =================================================================== --- php/php-src/branches/PHP_5_3/ext/json/tests/bug55543.phpt (rev 0) +++ php/php-src/branches/PHP_5_3/ext/json/tests/bug55543.phpt 2011-10-17 23:51:25 UTC (rev 318178) @@ -0,0 +1,13 @@ +--TEST-- +Bug #55543 (json_encode() with JSON_NUMERIC_CHECK & numeric string properties) +--SKIPIF-- +<?php if (!extension_loaded("json")) print "skip"; ?> +--FILE-- +<?php +$a = new stdClass; +$a->{"1"} = "5"; + +var_dump(json_encode($a, JSON_NUMERIC_CHECK)); +?> +--EXPECT-- +string(7) "{"1":5}" Modified: php/php-src/branches/PHP_5_4/ext/json/json.c =================================================================== --- php/php-src/branches/PHP_5_4/ext/json/json.c 2011-10-17 22:13:28 UTC (rev 318177) +++ php/php-src/branches/PHP_5_4/ext/json/json.c 2011-10-17 23:51:25 UTC (rev 318178) @@ -297,7 +297,7 @@ json_pretty_print_indent(buf, options TSRMLS_CC); - json_escape_string(buf, key, key_len - 1, options TSRMLS_CC); + json_escape_string(buf, key, key_len - 1, options & ~PHP_JSON_NUMERIC_CHECK TSRMLS_CC); smart_str_appendc(buf, ':'); json_pretty_print_char(buf, options, ' ' TSRMLS_CC); Added: php/php-src/branches/PHP_5_4/ext/json/tests/bug55543.phpt =================================================================== --- php/php-src/branches/PHP_5_4/ext/json/tests/bug55543.phpt (rev 0) +++ php/php-src/branches/PHP_5_4/ext/json/tests/bug55543.phpt 2011-10-17 23:51:25 UTC (rev 318178) @@ -0,0 +1,13 @@ +--TEST-- +Bug #55543 (json_encode() with JSON_NUMERIC_CHECK & numeric string properties) +--SKIPIF-- +<?php if (!extension_loaded("json")) print "skip"; ?> +--FILE-- +<?php +$a = new stdClass; +$a->{"1"} = "5"; + +var_dump(json_encode($a, JSON_NUMERIC_CHECK)); +?> +--EXPECT-- +string(7) "{"1":5}" Modified: php/php-src/trunk/ext/json/json.c =================================================================== --- php/php-src/trunk/ext/json/json.c 2011-10-17 22:13:28 UTC (rev 318177) +++ php/php-src/trunk/ext/json/json.c 2011-10-17 23:51:25 UTC (rev 318178) @@ -297,7 +297,7 @@ json_pretty_print_indent(buf, options TSRMLS_CC); - json_escape_string(buf, key, key_len - 1, options TSRMLS_CC); + json_escape_string(buf, key, key_len - 1, options & ~PHP_JSON_NUMERIC_CHECK TSRMLS_CC); smart_str_appendc(buf, ':'); json_pretty_print_char(buf, options, ' ' TSRMLS_CC); Added: php/php-src/trunk/ext/json/tests/bug55543.phpt =================================================================== --- php/php-src/trunk/ext/json/tests/bug55543.phpt (rev 0) +++ php/php-src/trunk/ext/json/tests/bug55543.phpt 2011-10-17 23:51:25 UTC (rev 318178) @@ -0,0 +1,13 @@ +--TEST-- +Bug #55543 (json_encode() with JSON_NUMERIC_CHECK & numeric string properties) +--SKIPIF-- +<?php if (!extension_loaded("json")) print "skip"; ?> +--FILE-- +<?php +$a = new stdClass; +$a->{"1"} = "5"; + +var_dump(json_encode($a, JSON_NUMERIC_CHECK)); +?> +--EXPECT-- +string(7) "{"1":5}"
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php