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.
This commit is contained in:
Tim Peters 2004-06-20 02:50:16 +00:00
parent 1c3fa18be7
commit 1b6f7a9057
6 changed files with 90 additions and 15 deletions

View file

@ -3,6 +3,7 @@
#include "Python.h"
#include "structseq.h"
#include "timefuncs.h"
#include <ctype.h>
@ -84,11 +85,8 @@ static double floattime(void);
/* 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 @@ time_strftime(PyObject *self, PyObject *args)
/* 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 @@ time_tzset(PyObject *self, PyObject *args)
/* Reset timezone, altzone, daylight and tzname */
inittimezone(m);
Py_DECREF(m);
Py_INCREF(Py_None);
return Py_None;
}