Browse Source

Fixed bug #67741 (auto_prepend_file messes up __LINE__)

This also fixes bug #54081
pull/1144/head
Reeze Xia 11 years ago
parent
commit
4e2c87edb3
  1. 15
      main/main.c
  2. 17
      sapi/cli/tests/bug67741.phpt
  3. 3
      sapi/cli/tests/bug67741_stub.inc

15
main/main.c

@ -2579,8 +2579,21 @@ PHPAPI int php_execute_script(zend_file_handle *primary_file TSRMLS_DC)
#endif
zend_set_timeout(INI_INT("max_execution_time"), 0);
}
retval = (zend_execute_scripts(ZEND_REQUIRE TSRMLS_CC, 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 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);
}
} zend_end_try();
#if HAVE_BROKEN_GETCWD

17
sapi/cli/tests/bug67741.phpt

@ -0,0 +1,17 @@
--TEST--
Bug #67741 (auto_prepend_file messes up __LINE__)
--INI--
include_path={PWD}
auto_prepend_file=bug67741_stub.inc
--SKIPIF--
<?php
include "skipif.inc";
?>
--FILE--
#!/bin/env php
<?php
echo "primary lineno: ", __LINE__, "\n";
?>
--EXPECT--
prepend lineno: 2
primary lineno: 3

3
sapi/cli/tests/bug67741_stub.inc

@ -0,0 +1,3 @@
<?php
echo "prepend lineno: ", __LINE__, "\n";
?>
Loading…
Cancel
Save