ID: 17997
Updated by: [email][/email]
Reported By: Xuefer at 21cn dot com
Status: Closed
Bug Type: Scripting Engine problem
Operating System: All
PHP Version: 4CVS, 5CVS
New Comment:

Fixed in PHP 5, won't fix in PHP 4.

Previous Comments:

[2003-10-07 12:01:43] [email][/email]

This bug has been fixed in CVS.

In case this was a PHP problem, snapshots of the sources are packaged
every three hours; this change will be in the next snapshot. You can
grab the snapshot at [url][/url].

In case this was a doentation problem, the fix will show up soon at

In case this was a website problem, the change will show
up on the site and on the mirror sites in short time.

Thank you for the report, and for helping us make PHP better.



[2003-08-10 18:12:54] [email][/email]

Yes it refetches the variable passed to switch() to check whether it
must be freed or not.


[2002-07-23 16:45:31] [email][/email]

the error message is on the closing '}' of the switch ...
does switch re-evaluate its argument on termination?
this is scary!


[2002-06-26 11:25:14] Xuefer at 21cn dot com

let the sample code say the problem

$str1 = '.........$...';
$str = &$str1;
$l = strlen($str);
for ($i = 0; $i < $l; $i ++)
switch ($str{$i})
case '$':
$str = '123'; // change string
$i = -1; // set to -1, for next loop to be 0
$l = strlen($str); // u know what this do

echo $str{$i};

Notice: Uninitialized string offset: 9 in
d:\myfile\wwwroot\\test.php on line 19

how ever, if i change
$str = '123';
$s = '123';
$str = &$s;

no wanning


Edit this bug report at [url][/url]