diff options
Diffstat (limited to 'Zend/zend_execute_API.c')
-rw-r--r-- | Zend/zend_execute_API.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index f9048dada3..10adfb6a26 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -1195,11 +1195,12 @@ ZEND_API int zend_eval_stringl(char *str, int str_len, zval *retval_ptr, char *s } CG(interactive) = 0; - retval = SUCCESS; zend_try { zend_execute(new_op_array TSRMLS_CC); } zend_catch { - retval = FAILURE; + destroy_op_array(new_op_array TSRMLS_CC); + efree(new_op_array); + zend_bailout(); } zend_end_try(); CG(interactive) = orig_interactive; @@ -1221,6 +1222,7 @@ ZEND_API int zend_eval_stringl(char *str, int str_len, zval *retval_ptr, char *s destroy_op_array(new_op_array TSRMLS_CC); efree(new_op_array); EG(return_value_ptr_ptr) = original_return_value_ptr_ptr; + retval = SUCCESS; } else { retval = FAILURE; } |