ID:               41372
 Updated by:       [EMAIL PROTECTED]
 Reported By:      forjest at gmail dot com
-Status:           Open
+Status:           Bogus
 Bug Type:         Arrays related
 Operating System: WinXP, Linux
 PHP Version:      4.4.7
 New Comment:

Duplicate of bug #40509.


Previous Comments:
------------------------------------------------------------------------

[2007-05-12 10:10:17] forjest at gmail dot com

/*for simple case just wrap array in some array function. That will
cause small overhead, but at least save your internal pointer*/
$Foo = array('val1', 'val2', 'val3');
end($Foo);
var_dump(key($Foo));
$AllOkay = array_merge($Foo);
var_dump(key($Foo));

----------
/*But to make immune running context for error handler function nothing
helps, except ugly serialize/unserialize solution*/

error_reporting(E_ALL); 
function TestErrorHandler($severity, $message, $filename, $line,
$super_globals) 
{ 
    global $foo;
    $foo = unserialize(serialize($super_globals));
} 

class Test  
{ 
     function run()  
     { 
          $Res = array('val1', 'val2', 'val3'); 
          end($Res); 
          var_dump(key($Res)); 
          HEY;//raise notice error 
          var_dump(key($Res));      
     } 
} 
$test = new Test(); 
set_error_handler('TestErrorHandler'); 
$test-> run();

------------------------------------------------------------------------

[2007-05-12 08:32:17] forjest at gmail dot com

Description:
------------
Bug first appeared in 4.4.2. Version 4.4.1 works okay.
5.1.4, 5.2.1 has this bug too.
-----
Seems algorithm of array copying was changed at 4.4.2 and 5.1.2
versions.
-----
This behavior cause problems in unexpected situations such as error
handling functions, when array pointer reseted due copying from another
array which reference to it.


Reproduce code:
---------------
$Foo = array('val1', 'val2', 'val3');
end($Foo);
var_dump(key($Foo));
$MagicInternalPointerResetter = $Foo;
var_dump(key($Foo));
--
Code describing unexpected results of this behavior listed here:
http://www.pastebin.ru/10226


Expected result:
----------------
int(2) int(2)

Actual result:
--------------
int(2) int(0)


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=41372&edit=1

Reply via email to