summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2014-10-12 20:54:45 +0200
committerNikita Popov <nikic@php.net>2014-10-12 20:55:52 +0200
commit0b09ba84b912be90c06d8d5ffab55bf850c3070b (patch)
treeb68a9980b0cc328f0db6a1d3eae283fcd2a0133f
parentb7e139a59ca7962c98ce1eb75150dd131978b41d (diff)
downloadphp-git-0b09ba84b912be90c06d8d5ffab55bf850c3070b.tar.gz
Ensure __LINE__ is always accurate
-rw-r--r--Zend/tests/line_const_in_array.phpt21
-rw-r--r--Zend/zend_compile.c2
2 files changed, 22 insertions, 1 deletions
diff --git a/Zend/tests/line_const_in_array.phpt b/Zend/tests/line_const_in_array.phpt
new file mode 100644
index 0000000000..181f67e3da
--- /dev/null
+++ b/Zend/tests/line_const_in_array.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Use of __LINE__ in arrays
+--FILE--
+<?php
+
+var_dump([
+ __LINE__,
+ __LINE__,
+ __LINE__,
+]);
+
+?>
+--EXPECT--
+array(3) {
+ [0]=>
+ int(4)
+ [1]=>
+ int(5)
+ [2]=>
+ int(6)
+}
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index e242bac951..5d3ee24c84 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -4917,7 +4917,7 @@ static zend_bool zend_try_ct_eval_magic_const(zval *zv, zend_ast *ast TSRMLS_DC)
switch (ast->attr) {
case T_LINE:
- ZVAL_LONG(zv, CG(zend_lineno));
+ ZVAL_LONG(zv, ast->lineno);
break;
case T_FILE:
ZVAL_STR_COPY(zv, CG(compiled_filename));