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