diff options
author | Xinchen Hui <laruence@php.net> | 2012-03-02 03:25:41 +0000 |
---|---|---|
committer | Xinchen Hui <laruence@php.net> | 2012-03-02 03:25:41 +0000 |
commit | 5f99d789b55ba53a54870909e09332ac377ee557 (patch) | |
tree | 550486851295886b12458866aad29bf948715d8a | |
parent | 2e5e82a8ca687d47eb413c1d3c6836f47eb007fb (diff) | |
download | php-git-5f99d789b55ba53a54870909e09332ac377ee557.tar.gz |
MFH: Fixed bug #60978 (exit code incorrect)
-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) { |