Commit 4fb96f41 authored by Alexander Belopolsky's avatar Alexander Belopolsky

Merged revisions 87919 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r87919 | alexander.belopolsky | 2011-01-10 20:21:25 -0500 (Mon, 10 Jan 2011) | 4 lines

  Issue #1726687: time.mktime() will now correctly compute value one
  second before epoch.  Original patch by Peter Wang, reported by Martin
  Blais.
........
parent 725cb96d
...@@ -233,6 +233,15 @@ class TimeTestCase(unittest.TestCase): ...@@ -233,6 +233,15 @@ class TimeTestCase(unittest.TestCase):
t1 = time.mktime(lt1) t1 = time.mktime(lt1)
self.assertTrue(0 <= (t1-t0) < 0.2) self.assertTrue(0 <= (t1-t0) < 0.2)
def test_mktime(self):
# Issue #1726687
for t in (-2, -1, 0, 1):
try:
tt = time.localtime(t)
except (OverflowError, ValueError):
pass
self.assertEqual(time.mktime(tt), t)
class TestLocale(unittest.TestCase): class TestLocale(unittest.TestCase):
def setUp(self): def setUp(self):
self.oldloc = locale.setlocale(locale.LC_ALL) self.oldloc = locale.setlocale(locale.LC_ALL)
......
...@@ -703,8 +703,11 @@ time_mktime(PyObject *self, PyObject *tup) ...@@ -703,8 +703,11 @@ time_mktime(PyObject *self, PyObject *tup)
time_t tt; time_t tt;
if (!gettmarg(tup, &buf)) if (!gettmarg(tup, &buf))
return NULL; return NULL;
buf.tm_wday = -1; /* sentinel; original value ignored */
tt = mktime(&buf); tt = mktime(&buf);
if (tt == (time_t)(-1)) { /* Return value of -1 does not necessarily mean an error, but tm_wday
* cannot remain set to -1 if mktime succedded. */
if (tt == (time_t)(-1) && buf.tm_wday == -1) {
PyErr_SetString(PyExc_OverflowError, PyErr_SetString(PyExc_OverflowError,
"mktime argument out of range"); "mktime argument out of range");
return NULL; return NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment