--- /dev/null
+--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 exception 'ErrorException' with message 'Undefined variable: id' in %s:%d
+Stack trace:
+#0 %s(%d): env::errorHandler()
+#1 {main}
+ thrown in %s on line %d
int fname_len;
zstr colon, fname, lcname;
+ *fci->retval_ptr_ptr = NULL;
+
if (!EG(active)) {
return FAILURE; /* executor is already inactive */
}
memset(&execute_data, 0, sizeof(zend_execute_data));
}
- /* we may return SUCCESS, and yet retval may be uninitialized,
- * if there was an exception...
- */
- *fci->retval_ptr_ptr = NULL;
-
if (!fci_cache || !fci_cache->initialized) {
if (Z_TYPE_P(fci->function_name)==IS_ARRAY) { /* assume array($obj, $name) couple */
zval **tmp_object_ptr, **tmp_real_function_name;