]> granicus.if.org Git - python/commitdiff
Fix probable bug; if errno == EINTR, floatsleep() doesn't break out of
authorAndrew M. Kuchling <amk@amk.ca>
Fri, 24 Mar 2000 20:35:20 +0000 (20:35 +0000)
committerAndrew M. Kuchling <amk@amk.ca>
Fri, 24 Mar 2000 20:35:20 +0000 (20:35 +0000)
   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.

Modules/timemodule.c

index d5a598b6b79a314aef7d2a600e0be3964663e1f0..b01366a239ba9b15cc47ca9fd11a1f301396a372 100644 (file)
@@ -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;
                }