In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/f0c5aa00eeb992584d6996af147c4c51fe7a6540?hp=2788925507d099c7b1e9382ad2ddc4f3d692de28>
- Log ----------------------------------------------------------------- commit f0c5aa00eeb992584d6996af147c4c51fe7a6540 Author: David Mitchell <[email protected]> Date: Sun Jul 26 02:19:20 2009 +0100 dup saved_curcop in PL_parser Commit 7c4baf47da introduced the saved_curcop field of PL_parser, but omitted to copy the entry during interpreter cloning. This may fix bugs [RT #58468], [RT #59498] ----------------------------------------------------------------------- Summary of changes: sv.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/sv.c b/sv.c index b26bbef..8bfe441 100644 --- a/sv.c +++ b/sv.c @@ -10426,6 +10426,10 @@ Perl_parser_dup(pTHX_ const yy_parser *const proto, CLONE_PARAMS *const param) Copy(proto->nexttype, parser->nexttype, 5, I32); parser->nexttoke = proto->nexttoke; #endif + + /* XXX should clone saved_curcop here, but we aren't passed + * proto_perl; so do it in perl_clone_using instead */ + return parser; } @@ -12084,6 +12088,13 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags, PL_parser = parser_dup(proto_perl->Iparser, param); + /* XXX this only works if the saved cop has already been cloned */ + if (proto_perl->Iparser) { + PL_parser->saved_curcop = (COP*)any_dup( + proto_perl->Iparser->saved_curcop, + proto_perl); + } + PL_subline = proto_perl->Isubline; PL_subname = sv_dup_inc(proto_perl->Isubname, param); -- Perl5 Master Repository
