Bug 975996: Add _PyTime_DoubleToTimet to C API
New include file timefuncs.h exports private API function
_PyTime_DoubleToTimet() from timemodule.c. timemodule should export
some other functions too (look for painful bits in datetimemodule.c).
Added insane-argument checking to datetime's assorted fromtimestamp()
and utcfromtimestamp() methods. Added insane-argument tests of these
to test_datetime, and insane-argument tests for ctime(), localtime()
and gmtime() to test_time.
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 0783f7f..f855796 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -3,6 +3,7 @@
#include "Python.h"
#include "structseq.h"
+#include "timefuncs.h"
#include <ctype.h>
@@ -84,11 +85,8 @@
/* For Y2K check */
static PyObject *moddict;
-/* Cast double x to time_t, but raise ValueError if x is too large
- * to fit in a time_t. ValueError is set on return iff the return
- * value is (time_t)-1 and PyErr_Occurred().
- */
-static time_t
+/* Exposed in timefuncs.h. */
+time_t
_PyTime_DoubleToTimet(double x)
{
time_t result;
@@ -382,7 +380,7 @@
/* Checks added to make sure strftime() does not crash Python by
indexing blindly into some array for a textual representation
by some bad index (fixes bug #897625).
-
+
No check for year since handled in gettmarg().
*/
if (buf.tm_mon < 0 || buf.tm_mon > 11) {
@@ -583,7 +581,7 @@
/* Reset timezone, altzone, daylight and tzname */
inittimezone(m);
Py_DECREF(m);
-
+
Py_INCREF(Py_None);
return Py_None;
}