summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorReeze Xia <reeze@php.net>2015-03-03 11:44:52 +0800
committerReeze Xia <reeze@php.net>2015-03-03 11:44:52 +0800
commitc6e415aeb2deb733636b9f181361ad4728971197 (patch)
tree7b244e98f9e9ef98c20a30f9c4e22514efb445ab /main
parentfa2450c5f817730a8c7016a88fe9dd02b09524e1 (diff)
parent4e2c87edb34c4f151da6899d523c93b8e8565975 (diff)
downloadphp-git-c6e415aeb2deb733636b9f181361ad4728971197.tar.gz
Merge branch 'PHP-5.6'
* PHP-5.6: Fixed bug #67741 (auto_prepend_file messes up __LINE__) Conflicts: main/main.c
Diffstat (limited to 'main')
-rw-r--r--main/main.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/main/main.c b/main/main.c
index f74190cf06..4bcf6989e9 100644
--- a/main/main.c
+++ b/main/main.c
@@ -2524,8 +2524,21 @@ PHPAPI int php_execute_script(zend_file_handle *primary_file)
#endif
zend_set_timeout(INI_INT("max_execution_time"), 0);
}
- retval = (zend_execute_scripts(ZEND_REQUIRE, NULL, 3, prepend_file_p, primary_file, append_file_p) == SUCCESS);
+ {
+ /*
+ 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.
+ */
+ int orig_start_lineno = CG(start_lineno);
+
+ CG(start_lineno) = 0;
+ retval = (zend_execute_scripts(ZEND_REQUIRE, NULL, 1, prepend_file_p) == SUCCESS);
+ CG(start_lineno) = orig_start_lineno;
+
+ retval = retval && (zend_execute_scripts(ZEND_REQUIRE, NULL, 2, primary_file, append_file_p) == SUCCESS);
+ }
} zend_end_try();
#if HAVE_BROKEN_GETCWD