Re: [PATCH] HERE mark in regex
[p5sagit/p5-mst-13.2.git] / pp_ctl.c
index 90c6a3c..0f034ee 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1079,7 +1079,7 @@ PP(pp_flip)
        if (PL_op->op_private & OPpFLIP_LINENUM) {
            struct io *gp_io;
            flip = PL_last_in_gv
-               && (gp_io = GvIOp(PL_last_in_gv))
+               && (gp_io = GvIO(PL_last_in_gv))
                && SvIV(sv) == (IV)IoLINES(gp_io);
        } else {
            flip = SvTRUE(sv);
@@ -1160,7 +1160,8 @@ PP(pp_flop)
        SV *targ = PAD_SV(cUNOP->op_first->op_targ);
        sv_inc(targ);
        if ((PL_op->op_private & OPpFLIP_LINENUM)
-         ? (PL_last_in_gv && SvIV(sv) == (IV)IoLINES(GvIOp(PL_last_in_gv)))
+         ? (GvIO(PL_last_in_gv)
+            && SvIV(sv) == (IV)IoLINES(GvIOp(PL_last_in_gv)))
          : SvTRUE(sv) ) {
            sv_setiv(PAD_SV(((UNOP*)cUNOP->op_first)->op_first->op_targ), 0);
            sv_catpv(targ, "E0");
@@ -2866,7 +2867,7 @@ S_doeval(pTHX_ int gimme, OP** startop)
        CvOUTSIDE(PL_compcv) = (CV*)SvREFCNT_inc(caller);
     }
 
-    SAVEFREESV(PL_compcv);
+    SAVEMORTALIZESV(PL_compcv);        /* must remain until end of current statement */
 
     /* make sure we compile in the right package */
 
@@ -3022,7 +3023,7 @@ PP(pp_require)
     char *tryname;
     SV *namesv = Nullsv;
     SV** svp;
-    I32 gimme = G_SCALAR;
+    I32 gimme = GIMME_V;
     PerlIO *tryrsfp = 0;
     STRLEN n_a;
     int filter_has_file = 0;
@@ -3360,7 +3361,7 @@ trylocal: {
     PL_eval_owner = thr;
     MUTEX_UNLOCK(&PL_eval_mutex);
 #endif /* USE_THREADS */
-    return DOCATCH(doeval(G_SCALAR, NULL));
+    return DOCATCH(doeval(gimme, NULL));
 }
 
 PP(pp_dofile)