xref: /php-src/Zend/tests/bug32252.phpt (revision 75a678a7)
1--TEST--
2Bug #32252 (Segfault when offsetSet throws an Exception (only without debug))
3--FILE--
4<?php
5
6class Test implements ArrayAccess
7{
8    function offsetExists($offset): bool
9    {
10        echo __METHOD__ . "($offset)\n";
11        return false;
12    }
13
14    function offsetGet($offset): mixed
15    {
16        echo __METHOD__ . "($offset)\n";
17        return null;
18    }
19
20    function offsetSet($offset, $value): void
21    {
22        echo __METHOD__ . "($offset, $value)\n";
23        throw new Exception("Ooops");
24    }
25
26    function offsetUnset($offset): void
27    {
28        echo __METHOD__ . "($offset)\n";
29    }
30}
31
32$list = new Test();
33try
34{
35    $list[-1] = 123;
36}
37catch (Exception $e)
38{
39    echo "CAUGHT\n";
40}
41
42?>
43--EXPECT--
44Test::offsetSet(-1, 123)
45CAUGHT
46