Skip to content

Commit 026757b

Browse files
czardozfacebook-github-bot
authored andcommitted
Backport bpo-41675: Modernize siginterrupt calls
Summary: The OSS build fails at compilation with this error: ``` /home/aniketpanse/cinder/Modules/signalmodule.c: In function ‘signal_siginterrupt_impl’: /home/aniketpanse/cinder/Modules/signalmodule.c:661:5: error: ‘siginterrupt’ is deprecated: Use sigaction with SA_RESTART instead [-Werror=deprecated-declarations] 661 | if (siginterrupt(signalnum, flag)<0) { | ^~ In file included from /home/aniketpanse/cinder/Modules/signalmodule.c:26: /usr/include/signal.h:311:12: note: declared here 311 | extern int siginterrupt (int __sig, int __interrupt) __THROW | ^~~~~~~~~~~~ cc1: all warnings being treated as errors make: *** [Makefile:2431: Modules/signalmodule.o] Error 1 make: *** Waiting for unfinished jobs.... ``` Backport upstream fix from python/cpython#22028 Reviewed By: carljm Differential Revision: D28297270 fbshipit-source-id: 6a0125b
1 parent d75d6e1 commit 026757b

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

Modules/signalmodule.c

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -658,7 +658,19 @@ signal_siginterrupt_impl(PyObject *module, int signalnum, int flag)
658658
"signal number out of range");
659659
return NULL;
660660
}
661-
if (siginterrupt(signalnum, flag)<0) {
661+
#ifdef HAVE_SIGACTION
662+
struct sigaction act;
663+
(void) sigaction(signalnum, NULL, &act);
664+
if (flag) {
665+
act.sa_flags &= ~SA_RESTART;
666+
}
667+
else {
668+
act.sa_flags |= SA_RESTART;
669+
}
670+
if (sigaction(signalnum, &act, NULL) < 0) {
671+
#else
672+
if (siginterrupt(signalnum, flag) < 0) {
673+
#endif
662674
PyErr_SetFromErrno(PyExc_OSError);
663675
return NULL;
664676
}

0 commit comments

Comments
 (0)