This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Avoid a run-time miniperl check every time SWASHNEW is called
[perl5.git] / pp_ctl.c
index 9eebf43..ef7be12 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1116,7 +1116,7 @@ PP(pp_mapwhile)
             * if necessary), then clear the current temps stack frame
             * *except* for those items. We do this splicing the items
             * into the start of the tmps frame (so some items may be on
-            * the tmps stack twice), then moving PL_stack_floor above
+            * the tmps stack twice), then moving PL_tmps_floor above
             * them, then freeing the frame. That way, the only tmps that
             * accumulate over iterations are the return values for map.
             * We have to do to this way so that everything gets correctly
@@ -2783,6 +2783,14 @@ PP(pp_goto)
                                    enterops, enterops + GOTO_DEPTH);
                if (retop)
                    break;
+               if (gotoprobe->op_sibling &&
+                       gotoprobe->op_sibling->op_type == OP_UNSTACK &&
+                       gotoprobe->op_sibling->op_sibling) {
+                   retop = dofindlabel(gotoprobe->op_sibling->op_sibling,
+                                       label, enterops, enterops + GOTO_DEPTH);
+                   if (retop)
+                       break;
+               }
            }
            PL_lastgotoprobe = gotoprobe;
        }