]> granicus.if.org Git - php/commitdiff
Fix closure extra args freeing for JIT as well
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 30 Aug 2019 08:35:41 +0000 (10:35 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 30 Aug 2019 08:35:41 +0000 (10:35 +0200)
ext/opcache/jit/zend_jit_vm_helpers.c

index 9681f1f2c443cbc1b684eb6f6053c2ba9e877371..70234e1da87a89b2c27059751729de4379fbd2ee 100644 (file)
@@ -49,13 +49,14 @@ ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_leave_nested_func_helper(uint32_t
                zend_clean_and_cache_symbol_table(EX(symbol_table));
        }
        EG(current_execute_data) = EX(prev_execute_data);
+
+       zend_vm_stack_free_extra_args_ex(call_info, execute_data);
        if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) {
                OBJ_RELEASE(Z_OBJ(execute_data->This));
        } else if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
                OBJ_RELEASE(ZEND_CLOSURE_OBJECT(EX(func)));
        }
 
-       zend_vm_stack_free_extra_args_ex(call_info, execute_data);
        old_execute_data = execute_data;
        execute_data = EX(prev_execute_data);
        zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);