}
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;
}
}
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;
}
ENTER;
SAVETMPS;
- PUSHSTACK(SI_MAGIC);
+ PUSHSTACKi(PERLSI_MAGIC);
if (magic_methcall(mg, meth, G_SCALAR, 2, NULL)) {
sv_setsv(sv, *stack_sp--);
}
- POPSTACK();
+ POPSTACK;
FREETMPS;
LEAVE;
return 0;
{
dSP;
ENTER;
- PUSHSTACK(SI_MAGIC);
+ PUSHSTACKi(PERLSI_MAGIC);
magic_methcall(mg, "STORE", G_SCALAR|G_DISCARD, 3, sv);
- POPSTACK();
+ POPSTACK;
LEAVE;
return 0;
}
ENTER;
SAVETMPS;
- PUSHSTACK(SI_MAGIC);
+ PUSHSTACKi(PERLSI_MAGIC);
if (magic_methcall(mg, "FETCHSIZE", G_SCALAR, 2, NULL)) {
sv = *stack_sp--;
retval = (U32) SvIV(sv)-1;
}
- POPSTACK();
+ POPSTACK;
FREETMPS;
LEAVE;
return retval;
dSP;
ENTER;
- PUSHSTACK(SI_MAGIC);
+ PUSHSTACKi(PERLSI_MAGIC);
PUSHMARK(SP);
XPUSHs(mg->mg_obj);
PUTBACK;
perl_call_method("CLEAR", G_SCALAR|G_DISCARD);
- POPSTACK();
+ POPSTACK;
LEAVE;
return 0;
}
ENTER;
SAVETMPS;
- PUSHSTACK(SI_MAGIC);
+ PUSHSTACKi(PERLSI_MAGIC);
PUSHMARK(SP);
EXTEND(SP, 2);
PUSHs(mg->mg_obj);
if (perl_call_method(meth, G_SCALAR))
sv_setsv(key, *stack_sp--);
- POPSTACK();
+ POPSTACK;
FREETMPS;
LEAVE;
return 0;
return 0;
}
-int
-magic_unchain(SV *sv, MAGIC *mg)
-{
- sv_unmagic(sv, mg->mg_type);
- return 0;
-}
-
#ifdef USE_LOCALE_COLLATE
int
magic_setcollxfrm(SV *sv, MAGIC *mg)
sv_setpv(sv,sig_name[sig]);
}
- PUSHSTACK(SI_SIGNAL);
+ PUSHSTACKi(PERLSI_SIGNAL);
PUSHMARK(SP);
PUSHs(sv);
PUTBACK;
perl_call_sv((SV*)cv, G_DISCARD);
- POPSTACK();
+ POPSTACK;
cleanup:
if (flags & 1)
savestack_ix -= 8; /* Unprotect save in progress. */