diff options
author | David Mitchell <davem@iabyn.com> | 2019-11-19 09:05:24 +0000 |
---|---|---|
committer | David Mitchell <davem@iabyn.com> | 2019-11-19 09:05:24 +0000 |
commit | 9c71f2eef9c728973f1bd4c4475f850f2f895c06 (patch) | |
tree | 3ef5dcd26f5f2e5128a0f72ef1d79b22967ee436 | |
parent | cd42a730c529f058bb29066bec486df8278d437b (diff) | |
download | perl-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.xs | 17 |
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; |