xref: /PHP-8.1/Zend/tests/bug41209.phpt (revision 75a678a7)
1--TEST--
2Bug #41209 (Segmentation fault with ArrayAccess, set_error_handler and undefined var)
3--FILE--
4<?php
5
6class env
7{
8    public function __construct()
9    {
10        set_error_handler(array(__CLASS__, 'errorHandler'));
11    }
12
13    public static function errorHandler($errno, $errstr, $errfile, $errline)
14    {
15        throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
16    }
17}
18
19class cache implements ArrayAccess
20{
21    private $container = array();
22
23    public function offsetGet($id): mixed {}
24
25    public function offsetSet($id, $value): void {}
26
27    public function offsetUnset($id): void {}
28
29    public function offsetExists($id): bool
30    {
31        return isset($this->containers[(string) $id]);
32    }
33}
34
35$env = new env();
36$cache = new cache();
37var_dump(isset($cache[$id]));
38
39echo "Done\n";
40?>
41--EXPECTF--
42Fatal error: Uncaught ErrorException: Undefined variable $id in %s:%d
43Stack trace:
44#0 %s(%d): env::errorHandler(2, 'Undefined varia...', '%s', %d)
45#1 {main}
46  thrown in %s on line %d
47