*_replace() clobbers referenced array elements
| Bug #23788 | *_replace() clobbers referenced array elements | ||||
|---|---|---|---|---|---|
| Submitted: | 2003-05-24 01:06 UTC | Modified: | 2003-05-25 16:49 UTC | ||
| From: | moriyoshi@php.net | Assigned: | |||
| Status: | Closed | Package: | Strings related | ||
| PHP Version: | 4.3.2RC4 | OS: | any | ||
| Private report: | No | CVE-ID: | None | ||
[2003-05-24 01:06 UTC] moriyoshi@php.net
Here's a simple test case.
--TEST--
--FILE--
<?php
$numeric = 123;
$bool = true;
$foo = array(&$numeric, &$bool);
var_dump($foo);
str_replace("abc", "def", $foo);
var_dump($foo);
?>
--EXPECT--
array(2) {
[0]=>
&int(123)
[1]=>
&bool(true)
}
array(2) {
[0]=>
&int(123)
[1]=>
&bool(true)
}
While the actual output is
array(2) {
[0]=>
&int(123)
[1]=>
&bool(true)
}
array(2) {
[0]=>
&string(3) "123"
[1]=>
&string(1) "1"
}
IMO this is not the intended behaviour, but also looks like a WFX issue. Note that the same applies to preg_replace() / ereg_replace().
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2003-05-25 16:49 UTC] iliaa@php.net
[2003-06-16 05:59 UTC] mibra2001 at msn dot com
[2003-06-28 05:43 UTC] zhenxing at public dot szptt dot net dot cn