summaryrefslogtreecommitdiff
path: root/mg.c
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2014-09-15 20:34:32 -0700
committerFather Chrysostomos <sprout@cpan.org>2014-09-15 21:45:12 -0700
commit07c325bb70eb5bf207be61e7fb078595d9e9d3c3 (patch)
treedec23f18ed79d27209be79f7da5684e6b254cdb9 /mg.c
parent34d81fc46b99fe9152b3744e81381ff804c6451c (diff)
downloadperl-07c325bb70eb5bf207be61e7fb078595d9e9d3c3.tar.gz
Make ‘SIG handler not defined’ UTF8- and null-safe
Diffstat (limited to 'mg.c')
-rw-r--r--mg.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/mg.c b/mg.c
index 01fa6b4091..4ed7c7a3ba 100644
--- a/mg.c
+++ b/mg.c
@@ -3124,11 +3124,17 @@ Perl_sighandler(int sig)
}
if (!cv || !CvROOT(cv)) {
- Perl_ck_warner(aTHX_ packWARN(WARN_SIGNAL), "SIG%s handler \"%s\" not defined.\n",
- PL_sig_name[sig], (gv ? GvENAME(gv)
- : ((cv && CvGV(cv))
- ? GvENAME(CvGV(cv))
- : "__ANON__")));
+ const HEK * const hek = gv
+ ? GvENAME_HEK(gv)
+ : cv && CvGV(cv) ? GvENAME_HEK(CvGV(cv)) : NULL;
+ if (hek)
+ Perl_ck_warner(aTHX_ packWARN(WARN_SIGNAL),
+ "SIG%s handler \"%"HEKf"\" not defined.\n",
+ PL_sig_name[sig], hek);
+ /* diag_listed_as: SIG%s handler "%s" not defined */
+ else Perl_ck_warner(aTHX_ packWARN(WARN_SIGNAL),
+ "SIG%s handler \"__ANON__\" not defined.\n",
+ PL_sig_name[sig]);
goto cleanup;
}