diff options
author | Xinchen Hui <laruence@php.net> | 2012-02-08 03:03:05 +0000 |
---|---|---|
committer | Xinchen Hui <laruence@php.net> | 2012-02-08 03:03:05 +0000 |
commit | ff63c09e6f4e5c7119aaf00d2af9c55f68cff168 (patch) | |
tree | 2eaa55ac141cf2cd19df159b0cc29533b01e2af3 | |
parent | d305d7a863a9c736a9c03cba1da9120ca497d049 (diff) | |
download | php-git-ff63c09e6f4e5c7119aaf00d2af9c55f68cff168.tar.gz |
Revert -r319102 and -r322922 in 5.4 branch since they introduce #60978
Fixed #60978 in trunk without reverting previous fix
#see http://news.php.net/php.internals/57789
-rw-r--r-- | NEWS | 1 | ||||
-rwxr-xr-x | Zend/tests/bug60978.phpt | 10 | ||||
-rw-r--r-- | Zend/zend_execute_API.c | 6 |
3 files changed, 15 insertions, 2 deletions
@@ -8,6 +8,7 @@ PHP NEWS - Core: . Fixed bug #60573 (type hinting with "self" keyword causes weird errors). (Laruence) + . Fixed bug #60978 (exit code incorrect). (Laruence) - cURL: . Added support for CURLOPT_FTP_RESPONSE_TIMEOUT, CURLOPT_APPEND, diff --git a/Zend/tests/bug60978.phpt b/Zend/tests/bug60978.phpt new file mode 100755 index 0000000000..ebaaf05f23 --- /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 . ' -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 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; } |