diff options
author | Reeze Xia <reeze@php.net> | 2015-03-03 16:25:43 +0800 |
---|---|---|
committer | Reeze Xia <reeze@php.net> | 2015-03-03 16:25:43 +0800 |
commit | 860fc3947f722bf8a14f37383368aab3eecbf5f8 (patch) | |
tree | fe154fcbb21ebedf5da5b84cb2fa1d4c9b03b602 | |
parent | bb466d57ae7a630526cc17f6259669f2be693aca (diff) | |
download | php-git-860fc3947f722bf8a14f37383368aab3eecbf5f8.tar.gz |
Improve fix for bug 67741
Thanks to laruence.
-rw-r--r-- | main/main.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/main/main.c b/main/main.c index 9f7c15354a..5d6abe3004 100644 --- a/main/main.c +++ b/main/main.c @@ -2508,19 +2508,21 @@ PHPAPI int php_execute_script(zend_file_handle *primary_file TSRMLS_DC) zend_set_timeout(INI_INT("max_execution_time"), 0); } - { - /* - If cli primary file has shabang line and there is a prepend file, - the `start_lineno` will be used by prepend file but not primary file, - save it and restore after prepend file been executed. - */ + /* + If cli primary file has shabang line and there is a prepend file, + the `start_lineno` will be used by prepend file but not primary file, + save it and restore after prepend file been executed. + */ + if (CG(start_lineno) && prepend_file_p) { int orig_start_lineno = CG(start_lineno); CG(start_lineno) = 0; - retval = (zend_execute_scripts(ZEND_REQUIRE TSRMLS_CC, NULL, 1, prepend_file_p) == SUCCESS); - CG(start_lineno) = orig_start_lineno; - - retval = retval && (zend_execute_scripts(ZEND_REQUIRE TSRMLS_CC, NULL, 2, primary_file, append_file_p) == SUCCESS); + if (zend_execute_scripts(ZEND_REQUIRE TSRMLS_CC, NULL, 1, prepend_file_p) == SUCCESS) { + CG(start_lineno) = orig_start_lineno; + retval = (zend_execute_scripts(ZEND_REQUIRE TSRMLS_CC, NULL, 2, primary_file, append_file_p) == SUCCESS); + } + } else { + retval = (zend_execute_scripts(ZEND_REQUIRE TSRMLS_CC, NULL, 3, prepend_file_p, primary_file, append_file_p) == SUCCESS); } } zend_end_try(); |