summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/tests/rope_with_exception.phpt52
1 files changed, 52 insertions, 0 deletions
diff --git a/Zend/tests/rope_with_exception.phpt b/Zend/tests/rope_with_exception.phpt
new file mode 100644
index 0000000000..e73ea64518
--- /dev/null
+++ b/Zend/tests/rope_with_exception.phpt
@@ -0,0 +1,52 @@
+--TEST--
+Exceptions thrown into a rope must not leak
+--FILE--
+<?php
+
+class Obj {
+ function __get($x) {
+ throw new Exception();
+ }
+}
+
+try {
+ $x = new Obj;
+ $y = 0;
+ $r = "$y|$x->x|";
+ echo "should never be reached";
+} catch (Exception $e) {
+ echo "$e\n";
+}
+
+try {
+ $x = new Obj;
+ $y = 0;
+ $r = "$y$x->x|";
+ echo "should never be reached";
+} catch (Exception $e) {
+ echo "$e\n";
+}
+
+try {
+ $x = new Obj;
+ $y = 0;
+ $r = "$y|$y$x->x";
+ echo "should never be reached";
+} catch (Exception $e) {
+ echo "$e\n";
+}
+
+?>
+--EXPECTF--
+Exception in %s:%d
+Stack trace:
+#0 %s(%d): Obj->__get('x')
+#1 {main}
+Exception in %s:%d
+Stack trace:
+#0 %s(%d): Obj->__get('x')
+#1 {main}
+Exception in %s:%d
+Stack trace:
+#0 %s(%d): Obj->__get('x')
+#1 {main}