eval_sv: followup fix to 4aca2f62ef
authorDavid Mitchell <davem@iabyn.com>
Sun, 3 Oct 2010 21:28:28 +0000 (22:28 +0100)
committerDavid Mitchell <davem@iabyn.com>
Sun, 3 Oct 2010 21:29:52 +0000 (22:29 +0100)
My original fix broke the 'goto redo_body' path. Not that
anything tests for this!

perl.c

diff --git a/perl.c b/perl.c
index ca5aea6..db950d5 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -2710,10 +2710,11 @@ Perl_eval_sv(pTHX_ SV *sv, I32 flags)
     switch (ret) {
     case 0:
  redo_body:
     switch (ret) {
     case 0:
  redo_body:
-       assert(PL_op == (OP*)(&myop));
-       PL_op = PL_ppaddr[OP_ENTEREVAL](aTHX);
-       if (!PL_op)
-           goto fail; /* failed in compilation */
+       if (PL_op == (OP*)(&myop)) {
+           PL_op = PL_ppaddr[OP_ENTEREVAL](aTHX);
+           if (!PL_op)
+               goto fail; /* failed in compilation */
+       }
        CALLRUNOPS(aTHX);
        retval = PL_stack_sp - (PL_stack_base + oldmark);
        if (!(flags & G_KEEPERR)) {
        CALLRUNOPS(aTHX);
        retval = PL_stack_sp - (PL_stack_base + oldmark);
        if (!(flags & G_KEEPERR)) {