diff options
author | Ondřej Surý <ondrej@sury.org> | 2014-06-20 12:01:47 +0200 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2014-06-20 12:01:47 +0200 |
commit | 60d44b592c4c4fdcbbf92db2882a97a9cc54713c (patch) | |
tree | 58f7068d9acde2338841263461fbf95d77a9ee2e /Zend | |
parent | c63e1a09f5cbd757f59beb729fb0fb36516819a9 (diff) | |
download | php-60d44b592c4c4fdcbbf92db2882a97a9cc54713c.tar.gz |
New upstream version 5.6.0~rc1+dfsgupstream/5.6.0_rc1+dfsg
Diffstat (limited to 'Zend')
-rw-r--r-- | Zend/tests/bug67436/a.php | 10 | ||||
-rw-r--r-- | Zend/tests/bug67436/b.php | 8 | ||||
-rw-r--r-- | Zend/tests/bug67436/bug67436.phpt | 26 | ||||
-rw-r--r-- | Zend/tests/bug67436/bug67436_nohandler.phpt | 24 | ||||
-rw-r--r-- | Zend/tests/bug67436/c.php | 5 | ||||
-rw-r--r-- | Zend/tests/closure_049.phpt | 22 | ||||
-rw-r--r-- | Zend/tests/closure_050.phpt | 22 | ||||
-rw-r--r-- | Zend/tests/closure_051.phpt | 21 | ||||
-rw-r--r-- | Zend/tests/closure_052.phpt | 21 | ||||
-rw-r--r-- | Zend/tests/closure_053.phpt | 22 | ||||
-rw-r--r-- | Zend/tests/closure_054.phpt | 22 | ||||
-rw-r--r-- | Zend/tests/closure_055.phpt | 21 | ||||
-rw-r--r-- | Zend/tests/closure_056.phpt | 21 | ||||
-rw-r--r-- | Zend/tests/closure_bug66622.phpt | 37 | ||||
-rw-r--r-- | Zend/tests/dereference_002.phpt | 2 | ||||
-rw-r--r-- | Zend/zend_builtin_functions.c | 32 | ||||
-rw-r--r-- | Zend/zend_closures.c | 4 | ||||
-rw-r--r-- | Zend/zend_compile.c | 10 | ||||
-rw-r--r-- | Zend/zend_execute.c | 3 | ||||
-rw-r--r-- | Zend/zend_execute_API.c | 2 | ||||
-rw-r--r-- | Zend/zend_vm_def.h | 11 | ||||
-rw-r--r-- | Zend/zend_vm_execute.h | 41 |
22 files changed, 343 insertions, 44 deletions
diff --git a/Zend/tests/bug67436/a.php b/Zend/tests/bug67436/a.php new file mode 100644 index 000000000..c560c2db7 --- /dev/null +++ b/Zend/tests/bug67436/a.php @@ -0,0 +1,10 @@ +<?php + +class a { + public function test($arg = c::TESTCONSTANT) { + echo __METHOD__ . "($arg)\n"; + } + + static public function staticTest() { + } +} diff --git a/Zend/tests/bug67436/b.php b/Zend/tests/bug67436/b.php new file mode 100644 index 000000000..793a1394d --- /dev/null +++ b/Zend/tests/bug67436/b.php @@ -0,0 +1,8 @@ +<?php + +class b extends a { + public function test() { + echo __METHOD__ . "()\n"; + parent::test(); + } +} diff --git a/Zend/tests/bug67436/bug67436.phpt b/Zend/tests/bug67436/bug67436.phpt new file mode 100644 index 000000000..49b8b491d --- /dev/null +++ b/Zend/tests/bug67436/bug67436.phpt @@ -0,0 +1,26 @@ +--TEST-- +bug67436: Autoloader isn't called if user defined error handler is present + +--INI-- +error_reporting= + +--FILE-- +<?php + +spl_autoload_register(function($classname) { + if (in_array($classname, array('a','b','c'))) { + require_once ($classname . '.php'); + } +}); + +set_error_handler(function ($errno, $errstr, $errfile, $errline) { +}, error_reporting()); + +a::staticTest(); + +$b = new b(); +$b->test(); + +--EXPECT-- +b::test() +a::test(c::TESTCONSTANT) diff --git a/Zend/tests/bug67436/bug67436_nohandler.phpt b/Zend/tests/bug67436/bug67436_nohandler.phpt new file mode 100644 index 000000000..464f71153 --- /dev/null +++ b/Zend/tests/bug67436/bug67436_nohandler.phpt @@ -0,0 +1,24 @@ +--TEST-- +bug67436: E_STRICT instead of custom error handler + +--INI-- +error_reporting=-1 + +--FILE-- +<?php + +spl_autoload_register(function($classname) { + if (in_array($classname, array('a','b','c'))) { + require_once ($classname . '.php'); + } +}); + +a::staticTest(); + +$b = new b(); +$b->test(); + +--EXPECTF-- +Strict Standards: Declaration of b::test() should be compatible with a::test($arg = c::TESTCONSTANT) in %s/bug67436/b.php on line %d +b::test() +a::test(c::TESTCONSTANT) diff --git a/Zend/tests/bug67436/c.php b/Zend/tests/bug67436/c.php new file mode 100644 index 000000000..47c848bfa --- /dev/null +++ b/Zend/tests/bug67436/c.php @@ -0,0 +1,5 @@ +<?php + +class c { + const TESTCONSTANT = "c::TESTCONSTANT"; +} diff --git a/Zend/tests/closure_049.phpt b/Zend/tests/closure_049.phpt new file mode 100644 index 000000000..684b33d56 --- /dev/null +++ b/Zend/tests/closure_049.phpt @@ -0,0 +1,22 @@ +--TEST-- +Closure 049: static::class in static closure in non-static method. + +--FILE-- +<?php + +class A { + function foo() { + $f = static function() { + return static::class; + }; + return $f(); + } +} + +class B extends A {} + +$b = new B; + +var_dump($b->foo()); +--EXPECT-- +string(1) "B" diff --git a/Zend/tests/closure_050.phpt b/Zend/tests/closure_050.phpt new file mode 100644 index 000000000..d43f325ef --- /dev/null +++ b/Zend/tests/closure_050.phpt @@ -0,0 +1,22 @@ +--TEST-- +Closure 050: static::class in non-static closure in non-static method. + +--FILE-- +<?php + +class A { + function foo() { + $f = function() { + return static::class; + }; + return $f(); + } +} + +class B extends A {} + +$b = new B; +var_dump($b->foo()); + +--EXPECT-- +string(1) "B" diff --git a/Zend/tests/closure_051.phpt b/Zend/tests/closure_051.phpt new file mode 100644 index 000000000..78b28d74a --- /dev/null +++ b/Zend/tests/closure_051.phpt @@ -0,0 +1,21 @@ +--TEST-- +Closure 051: static::class in static closure in static method. + +--FILE-- +<?php + +class A { + static function foo() { + $f = static function() { + return static::class; + }; + return $f(); + } +} + +class B extends A {} + +var_dump(B::foo()); + +--EXPECT-- +string(1) "B" diff --git a/Zend/tests/closure_052.phpt b/Zend/tests/closure_052.phpt new file mode 100644 index 000000000..f878515a8 --- /dev/null +++ b/Zend/tests/closure_052.phpt @@ -0,0 +1,21 @@ +--TEST-- +Closure 052: static::class in non-static closure in static method. + +--FILE-- +<?php + +class A { + static function foo() { + $f = function() { + return static::class; + }; + return $f(); + } +} + +class B extends A {} + +var_dump(B::foo()); + +--EXPECT-- +string(1) "B" diff --git a/Zend/tests/closure_053.phpt b/Zend/tests/closure_053.phpt new file mode 100644 index 000000000..b1d76a256 --- /dev/null +++ b/Zend/tests/closure_053.phpt @@ -0,0 +1,22 @@ +--TEST-- +Closure 053: self::class in static closure in non-static method. + +--FILE-- +<?php + +class A { + function foo() { + $f = static function() { + return self::class; + }; + return $f(); + } +} + +class B extends A {} + +$b = new B; +var_dump($b->foo()); + +--EXPECT-- +string(1) "A" diff --git a/Zend/tests/closure_054.phpt b/Zend/tests/closure_054.phpt new file mode 100644 index 000000000..b2f87d1d6 --- /dev/null +++ b/Zend/tests/closure_054.phpt @@ -0,0 +1,22 @@ +--TEST-- +Closure 054: self::class in non-static closure in non-static method. + +--FILE-- +<?php + +class A { + function foo() { + $f = function() { + return self::class; + }; + return $f(); + } +} + +class B extends A {} + +$b = new B; +var_dump($b->foo()); + +--EXPECT-- +string(1) "A" diff --git a/Zend/tests/closure_055.phpt b/Zend/tests/closure_055.phpt new file mode 100644 index 000000000..047d72a89 --- /dev/null +++ b/Zend/tests/closure_055.phpt @@ -0,0 +1,21 @@ +--TEST-- +Closure 055: self::class in static closure in static method. + +--FILE-- +<?php + +class A { + static function foo() { + $f = static function() { + return self::class; + }; + return $f(); + } +} + +class B extends A {} + +var_dump(B::foo()); + +--EXPECT-- +string(1) "A" diff --git a/Zend/tests/closure_056.phpt b/Zend/tests/closure_056.phpt new file mode 100644 index 000000000..566de10d8 --- /dev/null +++ b/Zend/tests/closure_056.phpt @@ -0,0 +1,21 @@ +--TEST-- +Closure 056: self::class in non-static closure in static method. + +--FILE-- +<?php + +class A { + static function foo() { + $f = function() { + return self::class; + }; + return $f(); + } +} + +class B extends A {} + +var_dump(B::foo()); + +--EXPECT-- +string(1) "A" diff --git a/Zend/tests/closure_bug66622.phpt b/Zend/tests/closure_bug66622.phpt new file mode 100644 index 000000000..1c9577d68 --- /dev/null +++ b/Zend/tests/closure_bug66622.phpt @@ -0,0 +1,37 @@ +--TEST-- +Bug 66622: Closures do not correctly capture the late bound class (static::) in some cases + +--FILE-- +<?php +class A { + static function name() { return 'A'; } + function foo() { + $fn = function() { return static::name(); }; + echo static::name() . ' vs ' . $fn() . "\n"; + } + function bar() { + $fn = static function() { return static::name(); }; + echo static::name() . ' vs ' . $fn() . "\n"; + } + static function baz() { + $fn = function() { return static::name(); }; + echo static::name() . ' vs ' . $fn() . "\n"; + } +} +class B extends A { + static function name() { return 'B'; } +} + +function test() { + (new B)->foo(); + (new B)->bar(); + (new B)->baz(); + B::baz(); +} +test(); + +--EXPECT-- +B vs B +B vs B +B vs B +B vs B diff --git a/Zend/tests/dereference_002.phpt b/Zend/tests/dereference_002.phpt index 022ff370d..da13decc3 100644 --- a/Zend/tests/dereference_002.phpt +++ b/Zend/tests/dereference_002.phpt @@ -76,4 +76,4 @@ NULL Notice: Undefined offset: 3 in %s on line %d -Fatal error: Call to a member function bar() on a non-object in %s on line %d +Fatal error: Call to a member function bar() on null in %s on line %d diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 6bfb88898..d7a1b3710 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -245,16 +245,16 @@ static const zend_function_entry builtin_functions[] = { /* {{{ */ ZEND_FE(func_num_args, arginfo_zend__void) ZEND_FE(func_get_arg, arginfo_func_get_arg) ZEND_FE(func_get_args, arginfo_zend__void) - ZEND_FE(strlen, arginfo_strlen) - ZEND_FE(strcmp, arginfo_strcmp) - ZEND_FE(strncmp, arginfo_strncmp) - ZEND_FE(strcasecmp, arginfo_strcmp) + ZEND_FE(strlen, arginfo_strlen) + ZEND_FE(strcmp, arginfo_strcmp) + ZEND_FE(strncmp, arginfo_strncmp) + ZEND_FE(strcasecmp, arginfo_strcmp) ZEND_FE(strncasecmp, arginfo_strncmp) - ZEND_FE(each, arginfo_each) + ZEND_FE(each, arginfo_each) ZEND_FE(error_reporting, arginfo_error_reporting) - ZEND_FE(define, arginfo_define) - ZEND_FE(defined, arginfo_defined) - ZEND_FE(get_class, arginfo_get_class) + ZEND_FE(define, arginfo_define) + ZEND_FE(defined, arginfo_defined) + ZEND_FE(get_class, arginfo_get_class) ZEND_FE(get_called_class, arginfo_zend__void) ZEND_FE(get_parent_class, arginfo_get_class) ZEND_FE(method_exists, arginfo_method_exists) @@ -274,13 +274,13 @@ static const zend_function_entry builtin_functions[] = { /* {{{ */ ZEND_FE(get_included_files, arginfo_zend__void) ZEND_FALIAS(get_required_files, get_included_files, arginfo_zend__void) ZEND_FE(is_subclass_of, arginfo_is_subclass_of) - ZEND_FE(is_a, arginfo_is_subclass_of) + ZEND_FE(is_a, arginfo_is_subclass_of) ZEND_FE(get_class_vars, arginfo_get_class_vars) ZEND_FE(get_object_vars, arginfo_get_object_vars) ZEND_FE(get_class_methods, arginfo_get_class_methods) ZEND_FE(trigger_error, arginfo_trigger_error) ZEND_FALIAS(user_error, trigger_error, arginfo_trigger_error) - ZEND_FE(set_error_handler, arginfo_set_error_handler) + ZEND_FE(set_error_handler, arginfo_set_error_handler) ZEND_FE(restore_error_handler, arginfo_zend__void) ZEND_FE(set_exception_handler, arginfo_set_exception_handler) ZEND_FE(restore_exception_handler, arginfo_zend__void) @@ -288,14 +288,14 @@ static const zend_function_entry builtin_functions[] = { /* {{{ */ ZEND_FE(get_declared_traits, arginfo_zend__void) ZEND_FE(get_declared_interfaces, arginfo_zend__void) ZEND_FE(get_defined_functions, arginfo_zend__void) - ZEND_FE(get_defined_vars, arginfo_zend__void) - ZEND_FE(create_function, arginfo_create_function) - ZEND_FE(get_resource_type, arginfo_get_resource_type) + ZEND_FE(get_defined_vars, arginfo_zend__void) + ZEND_FE(create_function, arginfo_create_function) + ZEND_FE(get_resource_type, arginfo_get_resource_type) ZEND_FE(get_loaded_extensions, arginfo_get_loaded_extensions) - ZEND_FE(extension_loaded, arginfo_extension_loaded) + ZEND_FE(extension_loaded, arginfo_extension_loaded) ZEND_FE(get_extension_funcs, arginfo_extension_loaded) ZEND_FE(get_defined_constants, arginfo_get_defined_constants) - ZEND_FE(debug_backtrace, arginfo_debug_backtrace) + ZEND_FE(debug_backtrace, arginfo_debug_backtrace) ZEND_FE(debug_print_backtrace, arginfo_debug_print_backtrace) #if ZEND_DEBUG ZEND_FE(zend_test_func, NULL) @@ -305,7 +305,7 @@ static const zend_function_entry builtin_functions[] = { /* {{{ */ #endif ZEND_FE(gc_collect_cycles, arginfo_zend__void) ZEND_FE(gc_enabled, arginfo_zend__void) - ZEND_FE(gc_enable, arginfo_zend__void) + ZEND_FE(gc_enable, arginfo_zend__void) ZEND_FE(gc_disable, arginfo_zend__void) ZEND_FE_END }; diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c index d714b35b3..bd2ede329 100644 --- a/Zend/zend_closures.c +++ b/Zend/zend_closures.c @@ -480,6 +480,7 @@ ZEND_API void zend_create_closure(zval *res, zend_function *func, zend_class_ent } } + closure->this_ptr = NULL; /* Invariants: * If the closure is unscoped, it has no bound object. * The the closure is scoped, it's either static or it's bound */ @@ -491,10 +492,7 @@ ZEND_API void zend_create_closure(zval *res, zend_function *func, zend_class_ent Z_ADDREF_P(this_ptr); } else { closure->func.common.fn_flags |= ZEND_ACC_STATIC; - closure->this_ptr = NULL; } - } else { - closure->this_ptr = NULL; } } /* }}} */ diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index beb53402b..7c979d56b 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -3461,8 +3461,11 @@ static char * zend_get_function_declaration(zend_function *fptr TSRMLS_DC) /* {{ *zv = *precv->op2.zv; zval_copy_ctor(zv); INIT_PZVAL(zv); - zval_update_constant_ex(&zv, 1, fptr->common.scope TSRMLS_CC); - if (Z_TYPE_P(zv) == IS_BOOL) { + if ((Z_TYPE_P(zv) & IS_CONSTANT_TYPE_MASK) == IS_CONSTANT) { + REALLOC_BUF_IF_EXCEED(buf, offset, length, Z_STRLEN_P(zv)); + memcpy(offset, Z_STRVAL_P(zv), Z_STRLEN_P(zv)); + offset += Z_STRLEN_P(zv); + } else if (Z_TYPE_P(zv) == IS_BOOL) { if (Z_LVAL_P(zv)) { memcpy(offset, "true", 4); offset += 4; @@ -3487,6 +3490,9 @@ static char * zend_get_function_declaration(zend_function *fptr TSRMLS_DC) /* {{ } else if (Z_TYPE_P(zv) == IS_ARRAY) { memcpy(offset, "Array", 5); offset += 5; + } else if ((Z_TYPE_P(zv) & IS_CONSTANT_TYPE_MASK) == IS_CONSTANT_AST) { + memcpy(offset, "<expression>", 12); + offset += 12; } else { zend_make_printable_zval(zv, &zv_copy, &use_copy); REALLOC_BUF_IF_EXCEED(buf, offset, length, Z_STRLEN(zv_copy)); diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index bdf8b6e70..ad92c5fb6 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1490,7 +1490,8 @@ ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, zend_fcall_i } else { zval **return_value_ptr = &EX_TMP_VAR(execute_data_ptr, execute_data_ptr->opline->result.var)->var.ptr; execute_data_ptr->function_state.function->internal_function.handler( - execute_data_ptr->opline->extended_value, *return_value_ptr, return_value_ptr, + execute_data_ptr->opline->extended_value + execute_data_ptr->call->num_additional_args, + *return_value_ptr, return_value_ptr, execute_data_ptr->object, return_value_used TSRMLS_CC ); } diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index c9de6b93c..af32e91f2 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -449,8 +449,6 @@ ZEND_API int zend_is_true(zval *op) /* {{{ */ } /* }}} */ -#include "../TSRM/tsrm_strtok_r.h" - #define IS_VISITED_CONSTANT 0x80 #define IS_CONSTANT_VISITED(p) (Z_TYPE_P(p) & IS_VISITED_CONSTANT) #define Z_REAL_TYPE_P(p) (Z_TYPE_P(p) & ~IS_VISITED_CONSTANT) diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index da4f03a2b..cd7dbf498 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2463,7 +2463,7 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV) FREE_OP2(); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -5400,6 +5400,7 @@ ZEND_VM_HANDLER(153, ZEND_DECLARE_LAMBDA_FUNCTION, CONST, UNUSED) { USE_OPLINE zend_function *op_array; + int closure_is_static, closure_is_being_defined_inside_static_context; SAVE_OPLINE(); @@ -5408,7 +5409,13 @@ ZEND_VM_HANDLER(153, ZEND_DECLARE_LAMBDA_FUNCTION, CONST, UNUSED) zend_error_noreturn(E_ERROR, "Base lambda function for closure not found"); } - zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(scope), EG(This) TSRMLS_CC); + closure_is_static = op_array->common.fn_flags & ZEND_ACC_STATIC; + closure_is_being_defined_inside_static_context = EX(prev_execute_data) && EX(prev_execute_data)->function_state.function->common.fn_flags & ZEND_ACC_STATIC; + if (closure_is_static || closure_is_being_defined_inside_static_context) { + zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(called_scope), NULL TSRMLS_CC); + } else { + zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(scope), EG(This) TSRMLS_CC); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 3fb5ab3eb..29a8c0c80 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -6781,6 +6781,7 @@ static int ZEND_FASTCALL ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED_HANDLER { USE_OPLINE zend_function *op_array; + int closure_is_static, closure_is_being_defined_inside_static_context; SAVE_OPLINE(); @@ -6789,7 +6790,13 @@ static int ZEND_FASTCALL ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED_HANDLER zend_error_noreturn(E_ERROR, "Base lambda function for closure not found"); } - zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(scope), EG(This) TSRMLS_CC); + closure_is_static = op_array->common.fn_flags & ZEND_ACC_STATIC; + closure_is_being_defined_inside_static_context = EX(prev_execute_data) && EX(prev_execute_data)->function_state.function->common.fn_flags & ZEND_ACC_STATIC; + if (closure_is_static || closure_is_being_defined_inside_static_context) { + zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(called_scope), NULL TSRMLS_CC); + } else { + zend_create_closure(&EX_T(opline->result.var).tmp_var, (zend_function *) op_array, EG(scope), EG(This) TSRMLS_CC); + } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -9306,7 +9313,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -10171,7 +10178,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE zval_dtor(free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -11037,7 +11044,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE zval_ptr_dtor_nogc(&free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -12483,7 +12490,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_ HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -15721,7 +15728,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -18067,7 +18074,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE zval_dtor(free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -20374,7 +20381,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE zval_ptr_dtor_nogc(&free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -23831,7 +23838,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_ HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -25473,7 +25480,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -26881,7 +26888,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPC zval_dtor(free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -28195,7 +28202,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPC zval_ptr_dtor_nogc(&free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -29937,7 +29944,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCO HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -33176,7 +33183,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -35288,7 +35295,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_ zval_dtor(free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -37455,7 +37462,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_ zval_ptr_dtor_nogc(&free_op2.var); HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { @@ -40623,7 +40630,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_H HANDLE_EXCEPTION(); } - zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); + zend_error_noreturn(E_ERROR, "Call to a member function %s() on %s", function_name_strval, zend_get_type_by_const(Z_TYPE_P(call->object))); } if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { |