From: Andrew M. Kuchling Date: Fri, 24 Mar 2000 20:35:20 +0000 (+0000) Subject: Fix probable bug; if errno == EINTR, floatsleep() doesn't break out of X-Git-Tag: v1.6a1~160 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c24ca4b192559526797d0410bf3cee2fecaaddf5;p=thirdparty%2FPython%2Fcpython.git Fix probable bug; if errno == EINTR, floatsleep() doesn't break out of a Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS block, but it calls Py_BLOCK_THREADS anyway. The change moves Py_BLOCK_THREADS to inside the if, so it's only executed when the function actually returns unexpectedly. --- diff --git a/Modules/timemodule.c b/Modules/timemodule.c index d5a598b6b79a..b01366a239ba 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -755,12 +755,12 @@ floatsleep(double secs) t.tv_usec = (long)(frac*1000000.0); Py_BEGIN_ALLOW_THREADS if (select(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &t) != 0) { - Py_BLOCK_THREADS #ifdef EINTR if (errno != EINTR) { #else if (1) { #endif + Py_BLOCK_THREADS PyErr_SetFromErrno(PyExc_IOError); return -1; }