]> granicus.if.org Git - php/commitdiff
Add test for bug #31402
authorfoobar <sniper@php.net>
Tue, 18 Jan 2005 11:36:44 +0000 (11:36 +0000)
committerfoobar <sniper@php.net>
Tue, 18 Jan 2005 11:36:44 +0000 (11:36 +0000)
ext/standard/tests/serialize/bug31402.phpt [new file with mode: 0644]

diff --git a/ext/standard/tests/serialize/bug31402.phpt b/ext/standard/tests/serialize/bug31402.phpt
new file mode 100644 (file)
index 0000000..4f8bf0c
--- /dev/null
@@ -0,0 +1,72 @@
+--TEST--
+Bug #31402 (unserialize() generates references when it should not)
+--FILE--
+<?php 
+
+class X {
+  var $i;
+
+  function X($i) {
+    $this->i = $i;
+  }
+}
+
+class Y {
+  var $A = array();
+  var $B;
+
+  function Y() {
+    $this->A[1] = new X(1);
+    $this->A[2] = new X(2);
+    $this->B = $this->A[1];
+  }
+}
+
+$before = new Y();
+$ser = serialize($before);
+$after = unserialize($ser);
+
+var_dump($before, $after);
+
+?>
+--EXPECT--
+object(y)(2) {
+  ["A"]=>
+  array(2) {
+    [1]=>
+    object(x)(1) {
+      ["i"]=>
+      int(1)
+    }
+    [2]=>
+    object(x)(1) {
+      ["i"]=>
+      int(2)
+    }
+  }
+  ["B"]=>
+  object(x)(1) {
+    ["i"]=>
+    int(1)
+  }
+}
+object(y)(2) {
+  ["A"]=>
+  array(2) {
+    [1]=>
+    &object(x)(1) {
+      ["i"]=>
+      int(1)
+    }
+    [2]=>
+    object(x)(1) {
+      ["i"]=>
+      int(2)
+    }
+  }
+  ["B"]=>
+  &object(x)(1) {
+    ["i"]=>
+    int(1)
+  }
+}