diff options
author | Vishal Bhatia <vishal@deja.com> | 1999-06-20 10:17:17 -0700 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1999-07-07 01:57:16 +0000 |
commit | cd2dd2fd24b15028d265200a1345a2bbcef5a4d9 (patch) | |
tree | 59d618a78897dbb4d058b8e8dc0bf2bacbb5e7d5 /ext | |
parent | f311e742d69bacf38a46d67254ccde1bc761a92a (diff) | |
download | perl-cd2dd2fd24b15028d265200a1345a2bbcef5a4d9.tar.gz |
Minor bug fix in pp_require
Message-ID: <AEBDBGKPMEAJAAAA@my-deja.com>
p4raw-id: //depot/perl@3630
Diffstat (limited to 'ext')
-rw-r--r-- | ext/B/B/CC.pm | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/ext/B/B/CC.pm b/ext/B/B/CC.pm index eb67bcf7db..b909d44851 100644 --- a/ext/B/B/CC.pm +++ b/ext/B/B/CC.pm @@ -1105,6 +1105,7 @@ sub doeval { write_back_stack(); my $sym = loadop($op); my $ppaddr = $op->ppaddr; + #runtime(qq/printf("$ppaddr type eval\n");/); runtime("PP_EVAL($ppaddr, ($sym)->op_next);"); $know_op = 1; invalidate_lexicals(REGISTER|TEMPORARY); @@ -1112,9 +1113,24 @@ sub doeval { } sub pp_entereval { doeval(@_) } -sub pp_require { doeval(@_) } sub pp_dofile { doeval(@_) } +#pp_require is protected by pp_entertry, so no protection for it. +sub pp_require { + my $op = shift; + $curcop->write_back; + write_back_lexicals(REGISTER|TEMPORARY); + write_back_stack(); + my $sym = doop($op); + runtime("while (PL_op != ($sym)->op_next && PL_op != (OP*)0 ){"); + runtime("PL_op = (*PL_op->op_ppaddr)(ARGS);"); + runtime("SPAGAIN;}"); + $know_op = 1; + invalidate_lexicals(REGISTER|TEMPORARY); + return $op->next; +} + + sub pp_entertry { my $op = shift; $curcop->write_back; |