diff options
-rw-r--r-- | Zend/tests/bug67938.phpt | 2 | ||||
-rw-r--r-- | Zend/zend_execute.c | 3 |
2 files changed, 4 insertions, 1 deletions
diff --git a/Zend/tests/bug67938.phpt b/Zend/tests/bug67938.phpt index 6597c4895f..fc8a9ab517 100644 --- a/Zend/tests/bug67938.phpt +++ b/Zend/tests/bug67938.phpt @@ -20,8 +20,10 @@ class Test implements TestInterface { $obj = new Test; $obj->foo(); $obj->bar([]); +$obj->bar([], 1); ?> --EXPECT-- Test::foo Test::bar +Test::bar diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 7544742cd7..673840ace5 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1042,7 +1042,8 @@ static zend_always_inline int zend_verify_variadic_arg_type(zend_function *zf, u ZEND_ASSERT(zf->common.fn_flags & ZEND_ACC_VARIADIC); cur_arg_info = &zf->common.arg_info[zf->common.num_args]; - if (UNEXPECTED(!zend_check_type(cur_arg_info->type, arg, cache_slot, zf->common.scope, 0, 0))) { + if (ZEND_TYPE_IS_SET(cur_arg_info->type) + && UNEXPECTED(!zend_check_type(cur_arg_info->type, arg, cache_slot, zf->common.scope, 0, 0))) { zend_verify_arg_error(zf, cur_arg_info, arg_num, cache_slot, arg); return 0; } |