diff --git a/ext/zend_test/test.c b/ext/zend_test/test.c index 37b3f7a2c5e..af6c4c7d127 100644 --- a/ext/zend_test/test.c +++ b/ext/zend_test/test.c @@ -850,7 +850,7 @@ static zend_function *zend_test_class_method_get(zend_object **object, zend_stri } memset(fptr, 0, sizeof(zend_internal_function)); fptr->type = ZEND_INTERNAL_FUNCTION; - fptr->num_args = 1; + fptr->num_args = 0; fptr->scope = (*object)->ce; fptr->fn_flags = ZEND_ACC_CALL_VIA_HANDLER; fptr->function_name = zend_string_copy(name); @@ -874,7 +874,7 @@ static zend_function *zend_test_class_static_method_get(zend_class_entry *ce, ze } memset(fptr, 0, sizeof(zend_internal_function)); fptr->type = ZEND_INTERNAL_FUNCTION; - fptr->num_args = 1; + fptr->num_args = 0; fptr->scope = ce; fptr->fn_flags = ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_STATIC; fptr->function_name = zend_string_copy(name); diff --git a/ext/zend_test/tests/gh16266.phpt b/ext/zend_test/tests/gh16266.phpt new file mode 100644 index 00000000000..44cb7ef807c --- /dev/null +++ b/ext/zend_test/tests/gh16266.phpt @@ -0,0 +1,21 @@ +--TEST-- +GH-16266 (_ZendTestClass::test() segfaults on named parameter) +--EXTENSIONS-- +zend_test +--FILE-- +test('a', 'b', c: 'c'); +} catch (Error $e) { + echo $e->getMessage(), "\n"; +} +try { + _ZendTestClass::test('a', 'b', c: 'c'); +} catch (Error $e) { + echo $e->getMessage(), "\n"; +} +?> +--EXPECT-- +Unknown named parameter $c +Unknown named parameter $c