diff options
-rw-r--r-- | NEWS | 1 | ||||
-rwxr-xr-x | Zend/tests/bug60978.phpt | 10 | ||||
-rw-r--r-- | Zend/zend_execute_API.c | 8 |
3 files changed, 18 insertions, 1 deletions
@@ -11,6 +11,7 @@ PHP NEWS accessing a static property). (Laruence) . Fixed bug #61000 (Exceeding max nesting level doesn't delete numerical vars). (Laruence) + . Fixed bug #60978 (exit code incorrect). (Laruence) - Standard: . Fixed memory leak in substr_replace. (Pierrick) diff --git a/Zend/tests/bug60978.phpt b/Zend/tests/bug60978.phpt new file mode 100755 index 0000000000..5dc6fe31e7 --- /dev/null +++ b/Zend/tests/bug60978.phpt @@ -0,0 +1,10 @@ +--TEST-- +Bug #60978 (exit code incorrect) +--FILE-- +<?php +$php = getenv('TEST_PHP_EXECUTABLE'); +exec($php . ' -n -r "exit(2);"', $output, $exit_code); +echo $exit_code; +?> +--EXPECT-- +2 diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index a60fff3bcb..10adfb6a26 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -1195,7 +1195,13 @@ ZEND_API int zend_eval_stringl(char *str, int str_len, zval *retval_ptr, char *s } CG(interactive) = 0; - zend_execute(new_op_array TSRMLS_CC); + zend_try { + zend_execute(new_op_array TSRMLS_CC); + } zend_catch { + destroy_op_array(new_op_array TSRMLS_CC); + efree(new_op_array); + zend_bailout(); + } zend_end_try(); CG(interactive) = orig_interactive; if (local_retval_ptr) { |