summaryrefslogtreecommitdiff
path: root/Modules/signalmodule.c
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2013-04-17 22:07:51 +0200
committerAntoine Pitrou <solipsis@pitrou.net>2013-04-17 22:07:51 +0200
commitb8da0a5842c1bdea30520250b3aa34de51a5845b (patch)
tree648d60851342c2bf7f8531b1e683c99c26c5c8b2 /Modules/signalmodule.c
parentc149902175801a448dea3b8c2fa3f496116ce311 (diff)
parentcf8a1e51ece7cad7096963927993ddfa738627e6 (diff)
downloadcpython-git-b8da0a5842c1bdea30520250b3aa34de51a5845b.tar.gz
Issue #17782: Fix undefined behaviour on platforms where ``struct timespec``'s "tv_nsec" member is not a C long.
Diffstat (limited to 'Modules/signalmodule.c')
-rw-r--r--Modules/signalmodule.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index 8b6c1c2388..dd55c10b90 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -779,14 +779,18 @@ signal_sigtimedwait(PyObject *self, PyObject *args)
struct timespec buf;
sigset_t set;
siginfo_t si;
+ time_t tv_sec;
+ long tv_nsec;
int err;
if (!PyArg_ParseTuple(args, "OO:sigtimedwait",
&signals, &timeout))
return NULL;
- if (_PyTime_ObjectToTimespec(timeout, &buf.tv_sec, &buf.tv_nsec) == -1)
+ if (_PyTime_ObjectToTimespec(timeout, &tv_sec, &tv_nsec) == -1)
return NULL;
+ buf.tv_sec = tv_sec;
+ buf.tv_nsec = tv_nsec;
if (buf.tv_sec < 0 || buf.tv_nsec < 0) {
PyErr_SetString(PyExc_ValueError, "timeout must be non-negative");