#else
dTHX;
#endif
+#if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
+ va_list args;
+#endif
#ifdef FAKE_PERSISTENT_SIGNAL_HANDLERS
(void) rsignal(sig, PL_csighandlerp);
if (PL_sig_ignoring[sig]) return;
exit(1);
#endif
#endif
+#if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
+ va_start(args, sig);
+#endif
if (
#ifdef SIGILL
sig == SIGILL ||
(*PL_sighandlerp)(sig);
else
S_raise_signal(aTHX_ sig);
+#if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
+ va_end(args);
+#endif
}
#if defined(FAKE_PERSISTENT_SIGNAL_HANDLERS) || defined(FAKE_DEFAULT_SIGNAL_HANDLERS)
/* Bail out if destruction is going on */
if(PL_dirty) return 0;
+ /* Skip _isaelem because _isa will handle it shortly */
+ if (PL_delaymagic & DM_ARRAY && mg->mg_type == PERL_MAGIC_isaelem)
+ return 0;
+
/* XXX Once it's possible, we need to
detect that our @ISA is aliased in
other stashes, and act on the stashes
: (GV*)SvMAGIC(mg->mg_obj)->mg_obj
);
- if(PL_delaymagic)
- PL_delayedisa = stash;
- else
- mro_isa_changed_in(stash);
-
- return 0;
-}
-
-int Perl_magic_freeisa(pTHX_ SV *sv, MAGIC *mg)
-{
- dVAR;
- GV** gvp;
- GV* gv;
- AV* isa;
-
- PERL_UNUSED_ARG(sv);
-
- if(PL_dirty) return 0;
-
- gvp = (GV**)hv_fetchs(GvSTASH((GV*)mg->mg_obj), "ISA", FALSE);
- gv = gvp ? *gvp : NULL;
- isa = (gv && isGV_with_GP(gv)) ? GvAV(gv) : NULL;
-
- if(isa) av_undef(isa);
+ mro_isa_changed_in(stash);
return 0;
}