Skip to content

Commit 6a0125b

Browse files
committed
[oss-build] 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 Test Plan: ran `./oss-build-and-test.sh`, which succeeded Reviewers: carljm, #cinder Reviewed By: carljm Subscribers: jackyzhang, #ig-webserver Differential Revision: https://phabricator.intern.facebook.com/D28297270 Signature: 28297270:1620421376:0a117614f6257be559e56172abd0ff2133d2b276
1 parent f679a0e commit 6a0125b

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)