summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Mitchell <davem@iabyn.com>2019-11-19 09:05:24 +0000
committerDavid Mitchell <davem@iabyn.com>2019-11-19 09:05:24 +0000
commit9c71f2eef9c728973f1bd4c4475f850f2f895c06 (patch)
tree3ef5dcd26f5f2e5128a0f72ef1d79b22967ee436
parentcd42a730c529f058bb29066bec486df8278d437b (diff)
downloadperl-9c71f2eef9c728973f1bd4c4475f850f2f895c06.tar.gz
fix POSIX.xs under VMS
My recent commit v5.31.5-346-g116e19abbf assumed that SA_SIGINFO and sa_sigaction would always be available, but they aren't under VMS, so guard its use.
-rw-r--r--ext/POSIX/POSIX.xs17
1 files changed, 11 insertions, 6 deletions
diff --git a/ext/POSIX/POSIX.xs b/ext/POSIX/POSIX.xs
index 31a4645562..78bddce63f 100644
--- a/ext/POSIX/POSIX.xs
+++ b/ext/POSIX/POSIX.xs
@@ -3089,18 +3089,21 @@ sigaction(sig, optaction, oldaction = 0)
* i.e. it used Perl_csighandler[13] rather than
* Perl_sighandler[13]
*/
- safe = ((oact.sa_flags & SA_SIGINFO)
+ safe =
+#ifdef SA_SIGINFO
+ (oact.sa_flags & SA_SIGINFO)
? ( oact.sa_sigaction == PL_csighandler3p
#ifdef PERL_USE_3ARG_SIGHANDLER
|| oact.sa_sigaction == PL_csighandlerp
#endif
)
- : ( oact.sa_handler == PL_csighandler1p
+ :
+#endif
+ ( oact.sa_handler == PL_csighandler1p
#ifndef PERL_USE_3ARG_SIGHANDLER
|| oact.sa_handler == PL_csighandlerp
#endif
- )
- );
+ );
svp = hv_fetchs(oldaction, "SAFE", TRUE);
sv_setiv(*svp, safe);
@@ -3118,13 +3121,15 @@ sigaction(sig, optaction, oldaction = 0)
(BTW, "csighandler" is very different from "sighandler".) */
svp = hv_fetchs(action, "SAFE", FALSE);
safe = *svp && SvTRUE(*svp);
-
+#ifdef SA_SIGINFO
if (act.sa_flags & SA_SIGINFO) {
/* 3-arg handler */
act.sa_sigaction =
safe ? PL_csighandler3p : PL_sighandler3p;
}
- else {
+ else
+#endif
+ {
/* 1-arg handler */
act.sa_handler =
safe ? PL_csighandler1p : PL_sighandler1p;