summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_time.py2
-rw-r--r--Misc/NEWS4
-rw-r--r--Modules/timemodule.c5
3 files changed, 11 insertions, 0 deletions
diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py
index 9d7dbc8..94de098 100644
--- a/Lib/test/test_time.py
+++ b/Lib/test/test_time.py
@@ -27,6 +27,8 @@ class TimeTestCase(unittest.TestCase):
int(self.t))
def test_sleep(self):
+ self.assertRaises(ValueError, time.sleep, -2)
+ self.assertRaises(ValueError, time.sleep, -1)
time.sleep(1.2)
def test_strftime(self):
diff --git a/Misc/NEWS b/Misc/NEWS
index 4f41fb1..b96ca50 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -219,6 +219,10 @@ Core and Builtins
Library
-------
+- Issue #12459: time.sleep() now raises a ValueError if the sleep length is
+ negative, instead of an infinite sleep on Windows or raising an IOError on
+ Linux for example, to have the same behaviour on all platforms.
+
- Issue #12451: pydoc: html_getfile() now uses tokenize.open() to support
Python scripts using a encoding different than UTF-8 (read the coding cookie
of the script).
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 636d4ad..4dc82a0 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -141,6 +141,11 @@ time_sleep(PyObject *self, PyObject *args)
double secs;
if (!PyArg_ParseTuple(args, "d:sleep", &secs))
return NULL;
+ if (secs < 0) {
+ PyErr_SetString(PyExc_ValueError,
+ "sleep length must be non-negative");
+ return NULL;
+ }
if (floatsleep(secs) != 0)
return NULL;
Py_INCREF(Py_None);