felipe Wed Jul 8 18:23:08 2009 UTC Added files: (Branch: PHP_5_3) /php-src/ext/standard/tests/array bug48854.phpt
Modified files: /php-src/ext/standard array.c /php-src NEWS Log: - MFH: Fixed bug #48854 (array_merge_recursive modifies arrays after first one) http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.308.2.21.2.37.2.56&r2=1.308.2.21.2.37.2.57&diff_format=u Index: php-src/ext/standard/array.c diff -u php-src/ext/standard/array.c:1.308.2.21.2.37.2.56 php-src/ext/standard/array.c:1.308.2.21.2.37.2.57 --- php-src/ext/standard/array.c:1.308.2.21.2.37.2.56 Fri May 15 17:03:03 2009 +++ php-src/ext/standard/array.c Wed Jul 8 18:23:07 2009 @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: array.c,v 1.308.2.21.2.37.2.56 2009/05/15 17:03:03 moriyoshi Exp $ */ +/* $Id: array.c,v 1.308.2.21.2.37.2.57 2009/07/08 18:23:07 felipe Exp $ */ #include "php.h" #include "php_ini.h" @@ -2305,6 +2305,7 @@ array_init_size(return_value, init_size); for (i = 0; i < argc; i++) { + SEPARATE_ZVAL(args[i]); if (!replace) { php_array_merge(Z_ARRVAL_P(return_value), Z_ARRVAL_PP(args[i]), recursive TSRMLS_CC); } else if (recursive && i > 0) { /* First array will be copied directly instead */ http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.965.2.671&r2=1.2027.2.547.2.965.2.672&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.965.2.671 php-src/NEWS:1.2027.2.547.2.965.2.672 --- php-src/NEWS:1.2027.2.547.2.965.2.671 Wed Jul 8 03:06:59 2009 +++ php-src/NEWS Wed Jul 8 18:23:08 2009 @@ -4,6 +4,8 @@ - Fixed spl_autoload_unregister/spl_autoad_functions wrt. Closures and Functors. (Christian Seiler) +- Fixed bug #48854 (array_merge_recursive modifies arrays after first one). + (Felipe) - Fixed bug #48788 (RecursiveDirectoryIterator doesn't descend into symlinked directories). (Ilia) - Fixed bug #48771 (rename() between volumes fails and reports no error on http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/bug48854.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/array/bug48854.phpt +++ php-src/ext/standard/tests/array/bug48854.phpt --TEST-- Bug #48854 (array_merge_recursive modifies arrays after first one) --FILE-- <?php $array1 = array( 'friends' => 5, 'children' => array( 'dogs' => 0, ), ); $array2 = array( 'friends' => 10, 'children' => array( 'cats' => 5, ), ); $merged = array_merge_recursive($array1, $array2); var_dump($array1, $array2); ?> --EXPECTF-- array(2) { [%u|b%"friends"]=> int(5) [%u|b%"children"]=> array(1) { [%u|b%"dogs"]=> int(0) } } array(2) { [%u|b%"friends"]=> int(10) [%u|b%"children"]=> array(1) { [%u|b%"cats"]=> int(5) } } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php