]> granicus.if.org Git - php/commitdiff
- MFH Add new test
authorMarcus Boerger <helly@php.net>
Sat, 19 Mar 2005 15:10:56 +0000 (15:10 +0000)
committerMarcus Boerger <helly@php.net>
Sat, 19 Mar 2005 15:10:56 +0000 (15:10 +0000)
ext/spl/tests/bug31185.phpt [new file with mode: 0755]

diff --git a/ext/spl/tests/bug31185.phpt b/ext/spl/tests/bug31185.phpt
new file mode 100755 (executable)
index 0000000..edd90f5
--- /dev/null
@@ -0,0 +1,57 @@
+--TEST--
+Bug #31185 (Crash when exceptions thrown from ArrayAccess::offsetUnset())
+--FILE--
+<?php
+
+class FooBar implements ArrayAccess {
+       private $array = array();
+
+       public function offsetExists($index) {
+               return isset($this->array[$index]);
+       }
+
+       public function offsetGet($index) {
+               return $this->array[$index];
+       }
+
+       public function offsetSet($index, $value) {
+               $this->array[$index] = $value;
+       }
+
+       public function offsetUnset($index) {
+               throw new Exception('FAIL');
+               unset($this->array[$index]);
+       }
+
+}
+
+$i = 0;
+$foo = new FooBar();
+$foo[$i] = $i++;
+$foo[$i] = $i++;
+$foo[$i] = $i++;
+try
+{
+       unset($foo[1]);
+}
+catch (Exception $e)
+{
+       echo "CAUGHT: " . $e->getMessage() . "\n";
+}
+
+print_R($foo);
+?>
+===DONE===
+--EXPECT--
+CAUGHT: FAIL
+FooBar Object
+(
+    [array:private] => Array
+        (
+            [1] => 0
+            [2] => 1
+            [3] => 2
+        )
+
+)
+===DONE===