summaryrefslogtreecommitdiff
path: root/Zend/tests/bug47343.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/tests/bug47343.phpt')
-rw-r--r--Zend/tests/bug47343.phpt44
1 files changed, 44 insertions, 0 deletions
diff --git a/Zend/tests/bug47343.phpt b/Zend/tests/bug47343.phpt
new file mode 100644
index 0000000..07a3b4e
--- /dev/null
+++ b/Zend/tests/bug47343.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Bug #47343 (gc_collect_cycles causes a segfault when called within a destructor in one case)
+--FILE--
+<?php
+class A
+{
+ public function __destruct()
+ {
+ gc_collect_cycles();
+ }
+
+ public function getB()
+ {
+ $this->data['foo'] = new B($this);
+ $this->data['bar'] = new B($this);
+ // Return either of the above
+ return $this->data['foo'];
+ }
+}
+
+class B
+{
+ public function B($A)
+ {
+ $this->A = $A;
+ }
+
+ public function __destruct()
+ {
+ }
+}
+
+for ($i = 0; $i < 2; $i++)
+{
+ $Aobj = new A;
+ $Bobj = $Aobj->getB();
+ unset($Bobj);
+ unset($Aobj);
+}
+
+echo "DONE\n";
+?>
+--EXPECT--
+DONE