diff --git a/ext/zend_test/observer.c b/ext/zend_test/observer.c index af45f91a5da5b..658498675603c 100644 --- a/ext/zend_test/observer.c +++ b/ext/zend_test/observer.c @@ -288,7 +288,7 @@ static void zend_test_execute_internal(zend_execute_data *execute_data, zval *re } else { php_printf("%*s\n", 2 * ZT_G(observer_nesting_depth), "", ZSTR_VAL(fbc->common.function_name)); } - } else { + } else if (ZEND_USER_CODE(fbc->type)) { php_printf("%*s\n", 2 * ZT_G(observer_nesting_depth), "", ZSTR_VAL(fbc->op_array.filename)); } diff --git a/ext/zend_test/tests/gh16294.phpt b/ext/zend_test/tests/gh16294.phpt new file mode 100644 index 0000000000000..1a85586d1def0 --- /dev/null +++ b/ext/zend_test/tests/gh16294.phpt @@ -0,0 +1,16 @@ +--TEST-- +GH-16294: Segfault in test observer on zend_pass_function +--EXTENSIONS-- +zend_test +--INI-- +zend_test.observer.execute_internal=1 +--FILE-- + +===DONE=== +--EXPECT-- +===DONE===