summaryrefslogtreecommitdiff
path: root/Zend/tests/gc_030.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/tests/gc_030.phpt')
-rw-r--r--Zend/tests/gc_030.phpt33
1 files changed, 33 insertions, 0 deletions
diff --git a/Zend/tests/gc_030.phpt b/Zend/tests/gc_030.phpt
new file mode 100644
index 0000000..ef044e0
--- /dev/null
+++ b/Zend/tests/gc_030.phpt
@@ -0,0 +1,33 @@
+--TEST--
+GC 030: GC and exceptions in destructors
+--INI--
+zend.enable_gc=1
+--FILE--
+<?php
+class foo {
+ public $foo;
+
+ public function __destruct() {
+ throw new Exception("foobar");
+ }
+}
+
+$f1 = new foo;
+$f2 = new foo;
+$f1->foo = $f2;
+$f2->foo = $f1;
+unset($f1, $f2);
+gc_collect_cycles();
+?>
+--EXPECTF--
+Fatal error: Uncaught exception 'Exception' with message 'foobar' in %sgc_030.php:%d
+Stack trace:
+#0 [internal function]: foo->__destruct()
+#1 %sgc_030.php(%d): gc_collect_cycles()
+#2 {main}
+
+Next exception 'Exception' with message 'foobar' in %sgc_030.php:%d
+Stack trace:
+#0 %sgc_030.php(%d): foo->__destruct()
+#1 {main}
+ thrown in %sgc_030.php on line %d