summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xZend/tests/bug32252.phpt47
1 files changed, 47 insertions, 0 deletions
diff --git a/Zend/tests/bug32252.phpt b/Zend/tests/bug32252.phpt
new file mode 100755
index 0000000000..706da18cfb
--- /dev/null
+++ b/Zend/tests/bug32252.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Bug #32252 (Segfault when offsetSet throws an Exception (only without debug))
+--FILE--
+<?php
+
+class Test implements ArrayAccess
+{
+ function offsetExists($offset)
+ {
+ echo __METHOD__ . "($offset)\n";
+ return false;
+ }
+
+ function offsetGet($offset)
+ {
+ echo __METHOD__ . "($offset)\n";
+ return null;
+ }
+
+ function offsetSet($offset, $value)
+ {
+ echo __METHOD__ . "($offset, $value)\n";
+ throw new Exception("Ooops");
+ }
+
+ function offsetUnset($offset)
+ {
+ echo __METHOD__ . "($offset)\n";
+ }
+}
+
+$list = new Test();
+try
+{
+ $list[-1] = 123;
+}
+catch (Exception $e)
+{
+ echo "CAUGHT\n";
+}
+
+?>
+===DONE===
+--EXPECT--
+Test::offsetSet(-1, 123)
+CAUGHT
+===DONE===