ID:               28325
 Updated by:       [EMAIL PROTECTED]
 Reported By:      antonr at game dot permonline dot ru
 Status:           Closed
 Bug Type:         Class/Object related
-Operating System: Irrelevant
+Operating System: *
-PHP Version:      5CVS-2004-06-30 (dev)
+PHP Version:      4.3.9, 5.0.1
 Assigned To:      moriyoshi
 New Comment:

Fixed in 4.3.10 & 5.0.1


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

[2004-07-05 10:00:23] [EMAIL PROTECTED]

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.



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

[2004-06-30 04:52:47] [EMAIL PROTECTED]

Correct URL:
http://www.voltex.jp/patches/bug28325-preliminary.patch.diff


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

[2004-06-30 04:51:34] [EMAIL PROTECTED]

Analysed.

Preliminary patch can be found here: http://www.voltex.jp/patches/


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

[2004-05-08 12:15:23] antonr at game dot permonline dot ru

but if change the line 

$a->myclass2->myclass1 = $a;

to

$a->myclass2->myclass1 = &$a;

serialization/unserialization works fine

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

[2004-05-08 12:12:30] antonr at game dot permonline dot ru

Description:
------------
I have one object with property "myclass1", referenced to second
object. And property "myclass2" of second object, referenced to first
object.
When I serialize the first object and unserialize the result string, I
get three objects: two copies of first object and a copy of second
object. 

Reproduce code:
---------------
<?php
  class MyClass1
    { public $myclass2; 
      public $number;
    }

  class MyClass2
    { public $myclass1;
    }

  $a = new MyClass1;
  $a->number = 1;
  $a->myclass2 = new MyClass2;
  $a->myclass2->myclass1 = $a;

  $b = unserialize(serialize($a));
  $b->number = 2;
  echo $b->number;
  echo "\n"; 
  echo $b->myclass2->myclass1->number;
?>


Expected result:
----------------
If serialization was made correctly, then we would get that 
$b and $b->myclass2->myclass1 are references to one instance, and the
output of script must be:

2
2


Actual result:
--------------
The actual output is

2
1

this means, that $b and $b->myclass2->myclass1 aren't references to the
same instance


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


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

Reply via email to