This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Change name of regex intrnl macro to new meaning
[perl5.git] / pp_hot.c
index 2176bac..9bc7eae 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -297,7 +297,6 @@ PP(pp_concat)
 PP(pp_padsv)
 {
     dVAR; dSP; dTARGET;
-    if(!TARG) TARG = PAD_SVl(PL_op->op_targ) = newSV(0);
     XPUSHs(TARG);
     if (PL_op->op_flags & OPf_MOD) {
        if (PL_op->op_private & OPpLVAL_INTRO)
@@ -335,7 +334,7 @@ PP(pp_readline)
 PP(pp_eq)
 {
     dVAR; dSP;
-    tryAMAGICbin_MG(eq_amg, AMGf_set);
+    tryAMAGICbin_MG(eq_amg, AMGf_set|AMGf_numeric);
 #ifndef NV_PRESERVES_UV
     if (SvROK(TOPs) && !SvAMAGIC(TOPs) && SvROK(TOPm1s) && !SvAMAGIC(TOPm1s)) {
         SP--;
@@ -828,9 +827,10 @@ PP(pp_rv2av)
     if (!(PL_op->op_private & OPpDEREFed))
        SvGETMAGIC(sv);
     if (SvROK(sv)) {
-       sv = amagic_deref_call(sv, is_pp_rv2av ? to_av_amg : to_hv_amg);
-       SPAGAIN;
-
+       if (SvAMAGIC(sv)) {
+           sv = amagic_deref_call(sv, is_pp_rv2av ? to_av_amg : to_hv_amg);
+           SPAGAIN;
+       }
        sv = SvRV(sv);
        if (SvTYPE(sv) != type)
            DIE(aTHX_ "Not %s reference", is_pp_rv2av ? an_array : a_hash);
@@ -2795,8 +2795,10 @@ PP(pp_entersub)
        }
        SvGETMAGIC(sv);
        if (SvROK(sv)) {
-           sv = amagic_deref_call(sv, to_cv_amg);
-           /* Don't SPAGAIN here.  */
+           if (SvAMAGIC(sv)) {
+               sv = amagic_deref_call(sv, to_cv_amg);
+               /* Don't SPAGAIN here.  */
+           }
        }
        else {
            const char *sym;
@@ -2899,9 +2901,7 @@ try_autoload:
        SAVECOMPPAD();
        PAD_SET_CUR_NOSAVE(padlist, CvDEPTH(cv));
        if (hasargs) {
-           AV *av = MUTABLE_AV(PAD_SVl(0));
-           if ((SV *)av == &PL_sv_undef)
-               PAD_SVl(0) = (SV *)(av = newAV());
+           AV *const av = MUTABLE_AV(PAD_SVl(0));
            if (AvREAL(av)) {
                /* @_ is normally not REAL--this should only ever
                 * happen when DB::sub() calls things that modify @_ */