From: Brett Cannon Date: Sat, 7 Apr 2012 18:59:29 +0000 (-0400) Subject: struct timeval.tv_usec is 4 bytes on 64-bit OS X as it should be, but X-Git-Tag: v3.3.0a3~291 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8798ad3e1e0647554cb68033c6b25b7b22e2a19d;p=python struct timeval.tv_usec is 4 bytes on 64-bit OS X as it should be, but is defined as an int while everyone else expects a long regardless of length. --- diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c index 9cb7481f24..8964b675fc 100644 --- a/Modules/selectmodule.c +++ b/Modules/selectmodule.c @@ -237,8 +237,12 @@ select_select(PyObject *self, PyObject *args) #endif tv.tv_sec = (long)sec; #else - if (_PyTime_ObjectToTimeval(tout, &tv.tv_sec, &tv.tv_usec) == -1) + /* 64-bit OS X has struct timeval.tv_usec as an int (and thus still 4 + bytes as required), but no longer defined by a long. */ + long tv_usec = tv.tv_usec; + if (_PyTime_ObjectToTimeval(tout, &tv.tv_sec, &tv_usec) == -1) return NULL; + tv.tv_usec = tv_usec; #endif if (tv.tv_sec < 0) { PyErr_SetString(PyExc_ValueError, "timeout must be non-negative");