siginterrupt is deprecated:
./Modules/signalmodule.c:667:5: warning: ‘siginterrupt’ is deprecated: Use sigaction with SA_RESTART instead [-Wdeprecated-declarations]
667 | if (siginterrupt(signalnum, flag)<0) {
--- /dev/null
+The implementation of :func:`signal.siginterrupt` now uses :c:func:`sigaction`
+(if it is available in the system) instead of the deprecated :c:func:`siginterrupt`.
+Patch by Pablo Galindo.
"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;
}