Generate the warnings masks programatically.
[p5sagit/p5-mst-13.2.git] / av.c
diff --git a/av.c b/av.c
index afca8bf..343274f 100644 (file)
--- a/av.c
+++ b/av.c
@@ -77,7 +77,7 @@ Perl_av_extend(pTHX_ AV *av, I32 key)
        PUSHMARK(SP);
        EXTEND(SP,2);
        PUSHs(SvTIED_obj((SV*)av, mg));
-       PUSHs(sv_2mortal(newSViv(key+1)));
+       mPUSHi(key + 1);
         PUTBACK;
        call_method("EXTEND", G_SCALAR|G_DISCARD);
        POPSTACK;
@@ -762,7 +762,7 @@ Perl_av_fill(pTHX_ register AV *av, I32 fill)
        PUSHMARK(SP);
        EXTEND(SP,2);
        PUSHs(SvTIED_obj((SV*)av, mg));
-       PUSHs(sv_2mortal(newSViv(fill+1)));
+       mPUSHi(fill + 1);
        PUTBACK;
        call_method("STORESIZE", G_SCALAR|G_DISCARD);
        POPSTACK;
@@ -974,11 +974,13 @@ IV *
 Perl_av_iter_p(pTHX_ AV *av) {
     MAGIC *const mg = get_aux_mg(av);
 #if IVSIZE == I32SIZE
-    return &(mg->mg_len);
+    return (IV *)&(mg->mg_len);
 #else
     if (!mg->mg_ptr) {
+       IV *temp;
        mg->mg_len = IVSIZE;
-       Newxz(mg->mg_ptr, 1, IV);
+       Newxz(temp, 1, IV);
+       mg->mg_ptr = (char *) temp;
     }
     return (IV *)mg->mg_ptr;
 #endif