diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 317114265c57..062d60a5a178 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -4927,13 +4927,15 @@ static uint32_t find_frameless_function_offset(uint32_t arity, const void *handl { void **handlers = zend_flf_handlers; void **current = handlers; - while (current) { + while (*current) { if (*current == handler) { return current - handlers; } current++; } + /* Unreachable in practice: zend_register_functions() records the handler + * of every frameless_function_infos entry at registration time. */ return (uint32_t)-1; } @@ -4963,10 +4965,9 @@ static const zend_frameless_function_info *find_frameless_function_info(const ze || frameless_function_info->num_args == args->children)) { uint32_t num_args = frameless_function_info->num_args; uint32_t offset = find_frameless_function_offset(num_args, frameless_function_info->handler); - if (offset == (uint32_t)-1) { - continue; + if (offset != (uint32_t)-1) { + return frameless_function_info; } - return frameless_function_info; } frameless_function_info++; }