mirror of
https://github.com/python/cpython.git
synced 2024-11-28 04:15:11 +08:00
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.
This commit is contained in:
parent
70b5d47f71
commit
c24ca4b192
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user