diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py index af0a960079d..fca221ce9cb 100644 --- a/Lib/test/test_time.py +++ b/Lib/test/test_time.py @@ -131,6 +131,7 @@ class TimeTestCase(unittest.TestCase): self.assertRaises(OverflowError, time.asctime, (bigyear + 1,) + (0,)*8) self.assertRaises(TypeError, time.asctime, 0) self.assertRaises(TypeError, time.asctime, ()) + self.assertRaises(TypeError, time.asctime, (0,) * 10) def test_asctime_bounding_check(self): self._bounds_checking(time.asctime) diff --git a/Modules/timemodule.c b/Modules/timemodule.c index d73b22bfccc..4b45f6e30d3 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -297,34 +297,20 @@ static int gettmarg(PyObject *args, struct tm *p) { int y; - PyObject *t = NULL; memset((void *) p, '\0', sizeof(struct tm)); - if (PyTuple_Check(args)) { - t = args; - Py_INCREF(t); - } - else { + if (!PyTuple_Check(args)) { PyErr_SetString(PyExc_TypeError, "Tuple or struct_time argument required"); return 0; } - if (t == NULL || !PyArg_ParseTuple(t, "iiiiiiiii", - &y, - &p->tm_mon, - &p->tm_mday, - &p->tm_hour, - &p->tm_min, - &p->tm_sec, - &p->tm_wday, - &p->tm_yday, - &p->tm_isdst)) { - Py_XDECREF(t); + if (!PyArg_ParseTuple(args, "iiiiiiiii", + &y, &p->tm_mon, &p->tm_mday, + &p->tm_hour, &p->tm_min, &p->tm_sec, + &p->tm_wday, &p->tm_yday, &p->tm_isdst)) return 0; - } - Py_DECREF(t); /* XXX: Why 1900? If the goal is to interpret 2-digit years as those in * 20th / 21st century according to the POSIX standard, we can just treat