summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cop.h2
-rw-r--r--util.c9
2 files changed, 6 insertions, 5 deletions
diff --git a/cop.h b/cop.h
index 4b2e04ff41..5eebabab63 100644
--- a/cop.h
+++ b/cop.h
@@ -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 */
diff --git a/util.c b/util.c
index c996081440..ac51f13f55 100644
--- a/util.c
+++ b/util.c
@@ -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;
}