ID:               24485
 Updated by:       [EMAIL PROTECTED]
 Reported By:      gomez at efrei dot fr
-Status:           Verified
+Status:           Assigned
 Bug Type:         Scripting Engine problem
 Operating System: *
 PHP Version:      4CVS, 5CVS (2004-04-13)
-Assigned To:      
+Assigned To:      derick
 New Comment:

This should NOT be a problem in PHP - but it is one in PHP 4. I've seen
this too and have a patch almost ready that backports the fixes done in
PHP 5.


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

[2005-02-03 21:16:08] ericvanblokland at gmail dot com

Ain't it time to think about a fix? (Reproduced with 4.3.10 on fedora
core 2 in debug-mode) 

The references created due to this bug, might be the cause my script
keeps segfaulting.

About this I've posted a report before, and will post another in the
near future. So I won't mention anything about that hear just yet.

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

[2005-01-21 00:19:11] [EMAIL PROTECTED]

Still exists in 4.3, but has been already fixed in both 5.x branches.

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

[2003-07-17 14:03:27] [EMAIL PROTECTED]

The following piece produces a similar result:

<?php
class foo {}
$a = array(new foo());
function show(&$this) { return 5; }
show($a[0]);
var_dump($a);
?>


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

[2003-07-03 10:17:47] gomez at efrei dot fr

Description:
------------
In an array, classes become classes references when I use a function
member.

Because of that, I don't copy it anymore, I just produce more  pointers
to it.
(see the '&' in the var dump)

If you comment the magic line, the bug won't appear.

Tested under linux (php 4.1.2 and 4.2.3)
and windows (php 4.3.2)

Reproduce code:
---------------
<?php
class AAAAA  {
    var $value;
    function AAAAA() {}
    function show() { return 5; }
}
$A = array(new AAAAA());
    $A[0]->show(); /* magic line */
$A[0]->value = 'A';
$B = $A;
$B[0]->value = 'B';
echo $A[0]->value.$B[0]->value;
echo "\n";
var_dump( $A );

?>

Expected result:
----------------
AB
array(1) {
  [0]=>
  object(aaaaa)(1) {
    ["value"]=>
    string(1) "A"
  }
}

Actual result:
--------------
BB
array(1) {
  [0]=>
  &object(aaaaa)(1) {
    ["value"]=>
    string(1) "B"
  }
}



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


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

Reply via email to