cvs: php4 /ext/standard string.c /ext/standard/tests/strings bug22224.phpt
| From: | Moriyoshi Koizumi | Date: | Fri, 14 Feb 2003 18:42:36 +0000 |
| Subject: | cvs: php4 /ext/standard string.c /ext/standard/tests/strings bug22224.phpt | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-18825@lists.php.net to get a copy of this message | ||
moriyoshi Fri Feb 14 13:42:36 2003 EDT
Added files:
/php4/ext/standard/tests/strings bug22224.phpt
Modified files:
/php4/ext/standard string.c
Log:
Fixed bug #22224 (implode changes object references in array)
Added test case for the bug
Index: php4/ext/standard/string.c
diff -u php4/ext/standard/string.c:1.356 php4/ext/standard/string.c:1.357
--- php4/ext/standard/string.c:1.356 Tue Feb 11 17:47:25 2003
+++ php4/ext/standard/string.c Fri Feb 14 13:42:36 2003
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: string.c,v 1.356 2003/02/11 22:47:25 iliaa Exp $ */
+/* $Id: string.c,v 1.357 2003/02/14 18:42:36 moriyoshi Exp $ */
/* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */
@@ -835,7 +835,8 @@
zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos);
while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **) &tmp, &pos) == SUCCESS) {
- convert_to_string_ex(tmp);
+ SEPARATE_ZVAL(tmp);
+ convert_to_string(*tmp);
smart_str_appendl(&implstr, Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp));
if (++i != numelems) {
Index: php4/ext/standard/tests/strings/bug22224.phpt
+++ php4/ext/standard/tests/strings/bug22224.phpt
--TEST--
Bug #22224 (implode changes object references in array)
--INI--
error_reporting=0
--FILE--
<?php
class foo {
}
$a = new foo();
$arr = array(0=>&$a, 1=>&$a);
var_dump(implode(",",$arr));
var_dump($arr)
?>
--EXPECT--
string(13) "Object,Object"
array(2) {
[0]=>
&object(foo)(0) {
}
[1]=>
&object(foo)(0) {
}
}