applied suggested fix for xhv_array sizing, with portability tweaks
[p5sagit/p5-mst-13.2.git] / mg.c
diff --git a/mg.c b/mg.c
index def57c4..b3dde0e 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -478,8 +478,7 @@ magic_get(SV *sv, MAGIC *mg)
                    }
                    sv_setpvn(sv,s,i);
                    if (tainting)
-                       tainted = (was_tainted || RX_MATCH_TAINTED(rx) ||
-                                  (curpm->op_pmflags & PMf_TAINTMEM));
+                       tainted = (was_tainted || RX_MATCH_TAINTED(rx));
                    break;
                }
            }
@@ -899,55 +898,7 @@ magic_setsig(SV *sv, MAGIC *mg)
 int
 magic_setisa(SV *sv, MAGIC *mg)
 {
-    HV *stash;
-    SV **svp;
-    I32 fill;
-    HV *basefields = Nullhv;
-    GV **gvp;
-    GV *gv;
-    HE *he;
-    static char *FIELDS = "FIELDS";
-
     sub_generation++;
-
-    if (mg->mg_type == 'i')
-       return 0;       /* Ignore lower-case version of the magic */
-
-    stash = GvSTASH(mg->mg_obj);
-    svp = AvARRAY((AV*)sv);
-                
-    /* NOTE: No support for tied ISA */
-    for (fill = AvFILLp((AV*)sv); fill >= 0; fill--, svp++) {
-       HV *basestash = gv_stashsv(*svp, FALSE);
-
-       if (!basestash) {
-           if (dowarn)
-               warn("No such package \"%_\" in @ISA assignment", *svp);
-           continue;
-       }
-       gvp = (GV**)hv_fetch(basestash, FIELDS, 6, FALSE);
-       if (gvp && *gvp && GvHV(*gvp)) {
-           if (basefields)
-               croak("Can't multiply inherit %%FIELDS");
-           basefields = GvHV(*gvp);
-       }
-    }
-
-    if (!basefields)
-       return 0;
-    
-    gv = (GV*)*hv_fetch(stash, FIELDS, 6, TRUE);
-    if (!isGV(gv))
-       gv_init(gv, stash, FIELDS, 6, TRUE);
-    if (!GvHV(gv))
-       GvHV(gv) = newHV();
-    if (HvKEYS(GvHV(gv)))
-       croak("Inherited %%FIELDS can't override existing %%FIELDS");
-
-    hv_iterinit(GvHV(gv));
-    while ((he = hv_iternext(basefields)))
-       hv_store(GvHV(gv), HeKEY(he), HeKLEN(he), HeVAL(he), HeHASH(he));
-
     return 0;
 }