diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 8c4b594d0000a..ef942142cd963 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -459,7 +459,13 @@ ZEND_API void execute_ex(zend_execute_data *execute_data TSRMLS_DC) ZEND_API void execute(zend_op_array *op_array TSRMLS_DC) { - zend_execute_data *execute_data = zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC); + zend_execute_data *execute_data; + + if (EG(exception)) { + return; + } + + execute_data = zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC); execute_ex(execute_data TSRMLS_CC); } diff --git a/Zend/zend_vm_execute.skl b/Zend/zend_vm_execute.skl index 58e5631c953c6..226829f8e1724 100644 --- a/Zend/zend_vm_execute.skl +++ b/Zend/zend_vm_execute.skl @@ -110,7 +110,13 @@ ZEND_API void {%EXECUTOR_NAME%}_ex(zend_execute_data *execute_data TSRMLS_DC) ZEND_API void {%EXECUTOR_NAME%}(zend_op_array *op_array TSRMLS_DC) { - zend_execute_data *execute_data = zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC); + zend_execute_data *execute_data; + + if (EG(exception)) { + return; + } + + execute_data = zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC); {%EXECUTOR_NAME%}_ex(execute_data TSRMLS_CC); }