]> granicus.if.org Git - php/commitdiff
- MFH: Fixed var_export() for array keys
authorDerick Rethans <derick@php.net>
Wed, 19 Dec 2007 08:45:16 +0000 (08:45 +0000)
committerDerick Rethans <derick@php.net>
Wed, 19 Dec 2007 08:45:16 +0000 (08:45 +0000)
- MFH: Fixed broken explode() test

ext/standard/tests/array/bug26458.phpt
ext/standard/tests/array/var_export2.phpt
ext/standard/tests/strings/explode.phpt
ext/standard/var.c

index d24e1f151b01ed08cee72a60d760ba87a9c06332..ecd12ba843d3fc1d0982049370adfa27ac3309d4 100644 (file)
Binary files a/ext/standard/tests/array/bug26458.phpt and b/ext/standard/tests/array/bug26458.phpt differ
index 2b8a1f97ef9b2daf7588552bbf71450b2fa38b03..6db44d5ca1172bde49397c6c2657662fbc39d372 100644 (file)
Binary files a/ext/standard/tests/array/var_export2.phpt and b/ext/standard/tests/array/var_export2.phpt differ
index defb79c229f64473876a8e0b7b7d1d61646550ad..6d54b6609042e94fdf1658ae42906256e4abab8b 100644 (file)
@@ -5,6 +5,7 @@ error_reporting=2047
 --FILE--
 <?php
 /* From http://bugs.php.net/19865 */
+echo var_export(explode("\1", "a". chr(1). "b". chr(0). "d" . chr(1) . "f" . chr(1). "1" . chr(1) . "d"), TRUE);
 echo md5(var_export(explode("\1", "a". chr(1). "b". chr(0). "d" . chr(1) . "f" . chr(1). "1" . chr(1) . "d"), TRUE));
 echo "\n";
 var_dump(@explode("", ""));
@@ -29,7 +30,13 @@ var_dump(explode(":^:","a lazy dog:^:jumps::over:^:",-1));
 var_dump(explode(":^:","a lazy dog:^:jumps::over:^:",-2));
 ?>
 --EXPECTF--
-6e5d59d5afd6693547a733219d079658
+array (
+  0 => 'a',
+  1 => 'b' . "\0" . 'd',
+  2 => 'f',
+  3 => '1',
+  4 => 'd',
+)d6bee42a771449205344c0938ad4f035
 bool(false)
 bool(false)
 bool(false)
index 907589468b84c67e4f3b87f422400739cf160087..66a037ab56a33402fb8ee786604a9818e8998dea 100644 (file)
@@ -355,13 +355,15 @@ static int php_array_element_export(zval **zv, int num_args, va_list args, zend_
        if (hash_key->nKeyLength==0) { /* numeric key */
                php_printf("%*c%ld => ", level + 1, ' ', hash_key->h);
        } else { /* string key */
-               char *key;
-               int key_len;
+               char *key, *tmp_str;
+               int key_len, tmp_len;
                key = php_addcslashes(hash_key->arKey, hash_key->nKeyLength - 1, &key_len, 0, "'\\", 2 TSRMLS_CC);
+               tmp_str = php_str_to_str_ex(key, key_len, "\0", 1, "' . \"\\0\" . '", 12, &tmp_len, 0, NULL);
                php_printf("%*c'", level + 1, ' ');
-               PHPWRITE(key, key_len);
+               PHPWRITE(tmp_str, tmp_len);
                php_printf("' => ");
                efree(key);
+               efree(tmp_str);
        }
        php_var_export(zv, level + 2 TSRMLS_CC);
        PUTS (",\n");