Change Perl_av_iter_p() to return IV* rather than I32* (which means
[p5sagit/p5-mst-13.2.git] / pp.c
diff --git a/pp.c b/pp.c
index f5ff461..937b7ce 100644 (file)
--- a/pp.c
+++ b/pp.c
@@ -172,13 +172,7 @@ PP(pp_rv2gv)
                        const char * const name = CopSTASHPV(PL_curcop);
                        gv = newGVgen(name);
                    }
-                   if (SvTYPE(sv) < SVt_RV)
-                       sv_upgrade(sv, SVt_RV);
-                   else if (SvPVX_const(sv)) {
-                       SvPV_free(sv);
-                       SvLEN_set(sv, 0);
-                        SvCUR_set(sv, 0);
-                   }
+                   prepare_SV_for_RV(sv);
                    SvRV_set(sv, (SV*)gv);
                    SvROK_on(sv);
                    SvSETMAGIC(sv);
@@ -536,7 +530,7 @@ S_refto(pTHX_ SV *sv)
        SvREFCNT_inc_void_NN(sv);
     }
     rv = sv_newmortal();
-    sv_upgrade(rv, SVt_RV);
+    sv_upgrade(rv, SVt_IV);
     SvRV_set(rv, sv);
     SvROK_on(rv);
     return rv;
@@ -3935,7 +3929,7 @@ PP(pp_aeach)
     dSP;
     AV *array = (AV*)POPs;
     const I32 gimme = GIMME_V;
-    I32 *iterp = Perl_av_iter_p(aTHX_ array);
+    IV *iterp = Perl_av_iter_p(aTHX_ array);
     const IV current = (*iterp)++;
 
     if (current > av_len(array)) {