Re: [PATCH for _66] Makefile.SH problem on dos/djgpp
[p5sagit/p5-mst-13.2.git] / pp.c
diff --git a/pp.c b/pp.c
index c65ed1c..7d51e49 100644 (file)
--- a/pp.c
+++ b/pp.c
@@ -604,11 +604,8 @@ PP(pp_study)
     if(unop->op_first && unop->op_first->op_type == OP_PUSHRE) {
        PMOP *pm = (PMOP *)unop->op_first;
        SV *rv = sv_newmortal();
-       REGEXP *re = pm->op_pmregexp;
-
        sv = newSVrv(rv, "Regexp");
-       sv_setpvn(sv,re->precomp,re->prelen);
-       sv_magic(sv,(SV*)ReREFCNT_inc(re),'r',0,0);
+       sv_magic(sv,(SV*)ReREFCNT_inc(pm->op_pmregexp),'r',0,0);
        RETURNX(PUSHs(rv));
     }
 
@@ -2421,7 +2418,6 @@ PP(pp_exists)
 PP(pp_hslice)
 {
     djSP; dMARK; dORIGMARK;
-    register HE *he;
     register HV *hv = (HV*)POPs;
     register I32 lval = op->op_flags & OPf_MOD;
     I32 realhv = (SvTYPE(hv) == SVt_PVHV);
@@ -2431,18 +2427,18 @@ PP(pp_hslice)
            SV *keysv = *MARK;
            SV **svp;
            if (realhv) {
-               he = hv_fetch_ent(hv, keysv, lval, 0);
+               HE *he = hv_fetch_ent(hv, keysv, lval, 0);
                svp = he ? &HeVAL(he) : 0;
            } else {
                svp = avhv_fetch_ent((AV*)hv, keysv, lval, 0);
            }
            if (lval) {
-               if (!he || HeVAL(he) == &sv_undef)
+               if (!svp || *svp == &sv_undef)
                    DIE(no_helem, SvPV(keysv, na));
                if (op->op_private & OPpLVAL_INTRO)
-                   save_helem(hv, keysv, &HeVAL(he));
+                   save_helem(hv, keysv, svp);
            }
-           *MARK = he ? HeVAL(he) : &sv_undef;
+           *MARK = svp ? *svp : &sv_undef;
        }
     }
     if (GIMME != G_ARRAY) {