summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2015-03-30 19:33:51 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2015-03-30 19:33:51 (GMT)
commit6aa446cf039f9533a5ecf2400bf060db4313a417 (patch)
tree2530c77e76dce1b8fce38980ae24a6a9d7ed50b3 /Modules
parentf70e1ca0fc30426d12aa8fc6684764ee11a66777 (diff)
downloadcpython-6aa446cf039f9533a5ecf2400bf060db4313a417.zip
cpython-6aa446cf039f9533a5ecf2400bf060db4313a417.tar.gz
cpython-6aa446cf039f9533a5ecf2400bf060db4313a417.tar.bz2
PEP 475: on EINTR, retry the function even if the timeout is equals to zero
Retry: * signal.sigtimedwait() * threading.Lock.acquire() * threading.RLock.acquire() * time.sleep()
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_threadmodule.c2
-rw-r--r--Modules/signalmodule.c2
-rw-r--r--Modules/timemodule.c2
3 files changed, 3 insertions, 3 deletions
diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c
index 0907aa0..323447f 100644
--- a/Modules/_threadmodule.c
+++ b/Modules/_threadmodule.c
@@ -84,7 +84,7 @@ acquire_timed(PyThread_type_lock lock, _PyTime_t timeout)
/* Check for negative values, since those mean block forever.
*/
- if (timeout <= 0) {
+ if (timeout < 0) {
r = PY_LOCK_FAILURE;
}
}
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index 3081562..a1fda3e 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -1011,7 +1011,7 @@ signal_sigtimedwait(PyObject *self, PyObject *args)
monotonic = _PyTime_GetMonotonicClock();
timeout = deadline - monotonic;
- if (timeout <= 0)
+ if (timeout < 0)
break;
} while (1);
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 74c544a..5f6290d 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -1455,7 +1455,7 @@ pysleep(_PyTime_t secs)
monotonic = _PyTime_GetMonotonicClock();
secs = deadline - monotonic;
- if (secs <= 00)
+ if (secs < 0)
break;
/* retry with the recomputed delay */
} while (1);