Skip to content

Commit

Permalink
Backport bpo-41675: Modernize siginterrupt calls
Browse files Browse the repository at this point in the history
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
  • Loading branch information
czardoz authored and facebook-github-bot committed May 7, 2021
1 parent d75d6e1 commit 026757b
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion Modules/signalmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -658,7 +658,19 @@ signal_siginterrupt_impl(PyObject *module, int signalnum, int flag)
"signal number out of range");
return NULL;
}
if (siginterrupt(signalnum, flag)<0) {
#ifdef HAVE_SIGACTION
struct sigaction act;
(void) sigaction(signalnum, NULL, &act);
if (flag) {
act.sa_flags &= ~SA_RESTART;
}
else {
act.sa_flags |= SA_RESTART;
}
if (sigaction(signalnum, &act, NULL) < 0) {
#else
if (siginterrupt(signalnum, flag) < 0) {
#endif
PyErr_SetFromErrno(PyExc_OSError);
return NULL;
}
Expand Down

0 comments on commit 026757b

Please sign in to comment.