From: Dave Mitchell Date: Sat, 12 May 2007 19:51:37 +0000 (+0000) Subject: save old PL_curcop value in parser struct X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=7c4baf47da;hp=5486870fe7f0fd0e99bf9619d5fd857a5b972014;p=p5sagit%2Fp5-mst-13.2.git save old PL_curcop value in parser struct p4raw-id: //depot/perl@31201 --- diff --git a/parser.h b/parser.h index 02509e4..affe7be 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 b1a9ff6..83e43bf 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())