Annotation of embedaddon/php/ext/spl/tests/bug31185.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Bug #31185 (Crash when exceptions thrown from ArrayAccess::offsetUnset())
! 3: --FILE--
! 4: <?php
! 5:
! 6: class FooBar implements ArrayAccess {
! 7: private $array = array();
! 8:
! 9: public function offsetExists($index) {
! 10: return isset($this->array[$index]);
! 11: }
! 12:
! 13: public function offsetGet($index) {
! 14: return $this->array[$index];
! 15: }
! 16:
! 17: public function offsetSet($index, $value) {
! 18: echo __METHOD__ . "($index, $value)\n";
! 19: $this->array[$index] = $value;
! 20: }
! 21:
! 22: public function offsetUnset($index) {
! 23: throw new Exception('FAIL');
! 24: unset($this->array[$index]);
! 25: }
! 26:
! 27: }
! 28:
! 29: $i = 0; $j = 0;
! 30: $foo = new FooBar();
! 31: $foo[$j++] = $i++;
! 32: $foo[$j++] = $i++;
! 33: $foo[$j++] = $i++;
! 34: try
! 35: {
! 36: unset($foo[1]);
! 37: }
! 38: catch (Exception $e)
! 39: {
! 40: echo "CAUGHT: " . $e->getMessage() . "\n";
! 41: }
! 42:
! 43: print_R($foo);
! 44: ?>
! 45: ===DONE===
! 46: --EXPECT--
! 47: FooBar::offsetSet(0, 0)
! 48: FooBar::offsetSet(1, 1)
! 49: FooBar::offsetSet(2, 2)
! 50: CAUGHT: FAIL
! 51: FooBar Object
! 52: (
! 53: [array:FooBar:private] => Array
! 54: (
! 55: [0] => 0
! 56: [1] => 1
! 57: [2] => 2
! 58: )
! 59:
! 60: )
! 61: ===DONE===
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>