diff options
-rw-r--r-- | cop.h | 2 | ||||
-rw-r--r-- | util.c | 9 |
2 files changed, 6 insertions, 5 deletions
@@ -297,10 +297,8 @@ struct context { #define SI_SIGNAL 4 #define SI_OVERLOAD 5 #define SI_DESTROY 6 -/* XXX todo #define SI_WARNHOOK 7 #define SI_DIEHOOK 8 -*/ struct stackinfo { AV * si_stack; /* stack for current runlevel */ @@ -1304,11 +1304,12 @@ die(pat, va_alist) SvREADONLY_on(msg); SAVEFREESV(msg); + PUSHSTACK(SI_DIEHOOK); PUSHMARK(SP); XPUSHs(msg); PUTBACK; perl_call_sv((SV*)cv, G_DISCARD); - + POPSTACK(); LEAVE; } } @@ -1369,11 +1370,12 @@ croak(pat, va_alist) SvREADONLY_on(msg); SAVEFREESV(msg); + PUSHSTACK(SI_DIEHOOK); PUSHMARK(SP); XPUSHs(msg); PUTBACK; perl_call_sv((SV*)cv, G_DISCARD); - + POPSTACK(); LEAVE; } } @@ -1428,11 +1430,12 @@ warn(pat,va_alist) SvREADONLY_on(msg); SAVEFREESV(msg); + PUSHSTACK(SI_WARNHOOK); PUSHMARK(SP); XPUSHs(msg); PUTBACK; perl_call_sv((SV*)cv, G_DISCARD); - + POPSTACK(); LEAVE; return; } |