diff options
-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(); |