summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Mitchell <davem@fdisolutions.com>2007-05-12 19:51:37 +0000
committerDave Mitchell <davem@fdisolutions.com>2007-05-12 19:51:37 +0000
commit7c4baf47da775f39e368d242f76a86f4e592cb5a (patch)
tree7216c2cad1fbadcccaa61cfb4a90854e0acda2ba
parent5486870fe7f0fd0e99bf9619d5fd857a5b972014 (diff)
downloadperl-7c4baf47da775f39e368d242f76a86f4e592cb5a.tar.gz
save old PL_curcop value in parser struct
p4raw-id: //depot/perl@31201
-rw-r--r--parser.h2
-rw-r--r--toke.c4
2 files changed, 4 insertions, 2 deletions
diff --git a/parser.h b/parser.h
index 02509e49b5..affe7be143 100644
--- a/parser.h
+++ b/parser.h
@@ -96,6 +96,8 @@ typedef struct yy_parser {
I32 nexttoke;
#endif
+ COP *saved_curcop; /* the previous PL_curcop */
+
} yy_parser;
diff --git a/toke.c b/toke.c
index b1a9ff6a03..83e43bfd11 100644
--- a/toke.c
+++ b/toke.c
@@ -671,11 +671,10 @@ Perl_lex_start(pTHX_ SV *line, PerlIO *rsfp, bool new_filter)
/* on scope exit, free this parser and restore any outer one */
SAVEPARSER(parser);
+ parser->saved_curcop = PL_curcop;
/* initialise lexer state */
- SAVECOPLINE(PL_curcop);
-
#ifdef PERL_MAD
parser->curforce = -1;
#else
@@ -723,6 +722,7 @@ Perl_lex_start(pTHX_ SV *line, PerlIO *rsfp, bool new_filter)
void
Perl_parser_free(pTHX_ const yy_parser *parser)
{
+ PL_curcop = parser->saved_curcop;
SvREFCNT_dec(parser->linestr);
if (parser->rsfp == PerlIO_stdin())