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

Reply via email to