From: Larry Wall <lwall@scalpel.netlabs.com>
Date: Sat, 19 Nov 1994 01:01:34 +0000 (-0800)
Subject: [return values correctly with G_EVAL]
X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=a0a2876f4683eca6ebc96f52b47823a87dd0ac4a;p=p5sagit%2Fp5-mst-13.2.git

[return values correctly with G_EVAL]

You need this patch for G_EVAL to return values correctly.
---

diff --git a/perl.c b/perl.c
index ea90305..f2ee633 100644
--- a/perl.c
+++ b/perl.c
@@ -707,8 +707,17 @@ I32 flags;		/* See G_* flags in cop.h */
   cleanup:
     if (flags & G_EVAL) {
 	if (scopestack_ix > oldscope) {
-	    op = (OP*)&myop;
-	    pp_leavetry();
+	    SV **newsp;
+	    PMOP *newpm;
+	    I32 gimme;
+	    register CONTEXT *cx;
+	    I32 optype;
+
+	    POPBLOCK(cx,newpm);
+	    POPEVAL(cx);
+	    pop_return();
+	    curpm = newpm;
+	    LEAVE;
 	}
 	Copy(oldtop, top_env, 1, jmp_buf);
     }