tony2001                Mon Apr 23 10:48:13 2007 UTC

  Modified files:              
    /php-src/ext/json   json.c 
    /php-src/ext/json/tests     bug41034.phpt bug41067.phpt 002.phpt 
  Log:
  MFB fix for #41034
  add missing tests
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/json/json.c?r1=1.24&r2=1.25&diff_format=u
Index: php-src/ext/json/json.c
diff -u php-src/ext/json/json.c:1.24 php-src/ext/json/json.c:1.25
--- php-src/ext/json/json.c:1.24        Mon Apr 16 16:52:20 2007
+++ php-src/ext/json/json.c     Mon Apr 23 10:48:13 2007
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: json.c,v 1.24 2007/04/16 16:52:20 andrei Exp $ */
+/* $Id: json.c,v 1.25 2007/04/23 10:48:13 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -176,7 +176,7 @@
                 } else if (r == 1) {
                     if (i == HASH_KEY_IS_STRING ||
                                                i == HASH_KEY_IS_UNICODE) {
-                        if (key.s[0] == '\0') {
+                        if (key.s[0] == '\0' && Z_TYPE_PP(val) == IS_OBJECT) {
                             /* Skip protected and private members. */
                             continue;
                         }
http://cvs.php.net/viewvc.cgi/php-src/ext/json/tests/bug41034.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/json/tests/bug41034.phpt
diff -u /dev/null php-src/ext/json/tests/bug41034.phpt:1.2
--- /dev/null   Mon Apr 23 10:48:13 2007
+++ php-src/ext/json/tests/bug41034.phpt        Mon Apr 23 10:48:13 2007
@@ -0,0 +1,12 @@
+--TEST--
+Bug #41034 (json_encode() ignores null byte started keys in arrays)
+--SKIPIF--
+<?php if (!extension_loaded("json")) print "skip"; ?>
+--FILE--
+<?php
+echo json_encode(array(0,"\0ab"=>1,"\0null-prefixed value"));
+echo "\nDone\n";
+?>
+--EXPECT--
+{"0":0,"\u0000ab":1,"1":"\u0000null-prefixed value"}
+Done
http://cvs.php.net/viewvc.cgi/php-src/ext/json/tests/bug41067.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/json/tests/bug41067.phpt
diff -u /dev/null php-src/ext/json/tests/bug41067.phpt:1.2
--- /dev/null   Mon Apr 23 10:48:13 2007
+++ php-src/ext/json/tests/bug41067.phpt        Mon Apr 23 10:48:13 2007
@@ -0,0 +1,23 @@
+--TEST--
+Bug #41067 (json_encode() problem with UTF-16 input)
+--SKIPIF--
+<?php if (!extension_loaded("json")) print "skip"; ?>
+--FILE--
+<?php
+
+$single_barline = "\360\235\204\200";
+$array = array($single_barline);
+var_dump(bin2hex((binary)$single_barline));
+
+$json = json_encode($array);
+$json_decoded = json_decode($json, true);
+
+var_dump(bin2hex((binary)$json_decoded[0]));
+
+?>
+--EXPECT--
+string(8) "f09d8480"
+string(8) "f09d8480"
+--UEXPECT--
+unicode(8) "f09d8480"
+unicode(8) "f09d8480"
http://cvs.php.net/viewvc.cgi/php-src/ext/json/tests/002.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/json/tests/002.phpt
diff -u php-src/ext/json/tests/002.phpt:1.1 php-src/ext/json/tests/002.phpt:1.2
--- php-src/ext/json/tests/002.phpt:1.1 Thu Jul 20 08:56:24 2006
+++ php-src/ext/json/tests/002.phpt     Mon Apr 23 10:48:13 2007
@@ -21,7 +21,7 @@
 string(2) """"
 string(4) "null"
 string(4) "true"
-string(2) "{}"
+string(7) "{"":""}"
 string(5) "[[1]]"
 string(1) "1"
 string(38) ""\u0440\u0443\u0441\u0441\u0438\u0448""

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to