summaryrefslogtreecommitdiff
path: root/toke.c
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2011-11-06 02:11:02 -0800
committerFather Chrysostomos <sprout@cpan.org>2011-11-06 10:21:42 -0800
commitd1299d44cb6299d416c31fa3425359d9a2c5d7c3 (patch)
tree4742f06660a230663d73fca5ce95a7da755a81d2 /toke.c
parent6bac172059b0ed213ca5326c1117d262ed34c1c1 (diff)
downloadperl-d1299d44cb6299d416c31fa3425359d9a2c5d7c3.tar.gz
Make multiple #line’s update dblines in evals
The array-copying stuff that happens when #line 3 "filename" is encountered in a string eval is not sufficient. If there are multiple such statements, only the first one copies the debugger’s lines arrays (@{"_<filename"}) into the new array. Checking that CopFILESV(PL_curcop) begins with ‘(eval ’ is a bit silly, since the parser already knows whether it’s processing a file without having to check file names. (And what if you have a real file beginning with ‘(eval ’?) See commit 8818d40 and others that it references, for the history of this piece of code.
Diffstat (limited to 'toke.c')
-rw-r--r--toke.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/toke.c b/toke.c
index e01080b765..6e88c8a25c 100644
--- a/toke.c
+++ b/toke.c
@@ -1585,7 +1585,7 @@ S_incline(pTHX_ const char *s)
tmplen = 0;
}
- if (tmplen > 7 && strnEQ(cf, "(eval ", 6)) {
+ if (!PL_rsfp && !PL_parser->filtered) {
/* must copy *{"::_<(eval N)[oldfilename:L]"}
* to *{"::_<newfilename"} */
/* However, the long form of evals is only turned on by the