mirror of
https://github.com/php/php-src.git
synced 2024-12-12 11:23:53 +08:00
3ae995f03c
This implements a reduced variant of #1226 with just the following change: -Fatal error: Uncaught exception 'EngineException' with message 'Call to private method foo::bar() from context ''' in %s:%d +Fatal error: Uncaught EngineException: Call to private method foo::bar() from context '' in %s:%d The '' wrapper around messages is very weird if the exception message itself contains ''. Futhermore having the message wrapped in '' doesn't work for the "and defined" suffix of TypeExceptions.
47 lines
980 B
PHP
47 lines
980 B
PHP
--TEST--
|
|
Bug #41209 (Segmentation fault with ArrayAccess, set_error_handler and undefined var)
|
|
--FILE--
|
|
<?php
|
|
|
|
class env
|
|
{
|
|
public function __construct()
|
|
{
|
|
set_error_handler(array(__CLASS__, 'errorHandler'));
|
|
}
|
|
|
|
public static function errorHandler($errno, $errstr, $errfile, $errline)
|
|
{
|
|
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
|
|
}
|
|
}
|
|
|
|
class cache implements ArrayAccess
|
|
{
|
|
private $container = array();
|
|
|
|
public function offsetGet($id) {}
|
|
|
|
public function offsetSet($id, $value) {}
|
|
|
|
public function offsetUnset($id) {}
|
|
|
|
public function offsetExists($id)
|
|
{
|
|
return isset($this->containers[(string) $id]);
|
|
}
|
|
}
|
|
|
|
$env = new env();
|
|
$cache = new cache();
|
|
var_dump(isset($cache[$id]));
|
|
|
|
echo "Done\n";
|
|
?>
|
|
--EXPECTF--
|
|
Fatal error: Uncaught ErrorException: Undefined variable: id in %s:%d
|
|
Stack trace:
|
|
#0 %s(%d): env::errorHandler(8, '%s', '%s', 34, Array)
|
|
#1 {main}
|
|
thrown in %s on line %d
|