From: Vishal Bhatia Date: Mon, 18 Jan 1999 01:32:31 +0000 (-0800) Subject: pp_mapstart & pp_grepstart return val (CC.pm) X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=e0c90f07381288b70a424e2e76ab453c6c64c0e1;p=p5sagit%2Fp5-mst-13.2.git pp_mapstart & pp_grepstart return val (CC.pm) To: perl5-porters@perl.org Message-ID: <19990118093231.18443.qmail@hotmail.com> p4raw-id: //depot/cfgperl@2657 --- diff --git a/ext/B/B/CC.pm b/ext/B/B/CC.pm index d9cf119..d8cc090 100644 --- a/ext/B/B/CC.pm +++ b/ext/B/B/CC.pm @@ -1020,7 +1020,14 @@ sub pp_mapstart { $need_freetmps = 0; } write_back_stack(); - doop($op); + # pp_mapstart can return either op_next->op_next or op_next->op_other and + # we need to be able to distinguish the two at runtime. + my $sym= doop($op); + my $next=$op->next; + $next->save; + my $nexttonext=$next->next; + $nexttonext->save; + runtime(sprintf("if (PL_op == (($sym)->op_next)->op_next) goto %s;", label($nexttonext))); return $op->next->other; }