time: fix gcc warning

* Create format_arg variable to use the right types
 * Strip trailing spaces
This commit is contained in:
Victor Stinner 2010-10-07 01:00:52 +00:00
parent 4726e40e00
commit ef12810f0c
1 changed files with 28 additions and 27 deletions

View File

@ -384,31 +384,31 @@ gettmarg(PyObject *args, struct tm *p)
* asctime(). Return 1 if all values are valid, otherwise set an exception
* and returns 0.
*/
static int
checktm(struct tm* buf)
static int
checktm(struct tm* buf)
{
/* Checks added to make sure strftime() and asctime() does not crash Python by
indexing blindly into some array for a textual representation
by some bad index (fixes bug #897625 and #6608).
Also support values of zero from Python code for arguments in which
that is out of range by forcing that value to the lowest value that
is valid (fixed bug #1520914).
Valid ranges based on what is allowed in struct tm:
- tm_year: [0, max(int)] (1)
- tm_mon: [0, 11] (2)
- tm_mday: [1, 31]
- tm_hour: [0, 23]
- tm_min: [0, 59]
- tm_sec: [0, 60]
- tm_wday: [0, 6] (1)
- tm_yday: [0, 365] (2)
- tm_isdst: [-max(int), max(int)]
(1) gettmarg() handles bounds-checking.
(2) Python's acceptable range is one greater than the range in C,
/* Checks added to make sure strftime() and asctime() does not crash Python by
indexing blindly into some array for a textual representation
by some bad index (fixes bug #897625 and #6608).
Also support values of zero from Python code for arguments in which
that is out of range by forcing that value to the lowest value that
is valid (fixed bug #1520914).
Valid ranges based on what is allowed in struct tm:
- tm_year: [0, max(int)] (1)
- tm_mon: [0, 11] (2)
- tm_mday: [1, 31]
- tm_hour: [0, 23]
- tm_min: [0, 59]
- tm_sec: [0, 60]
- tm_wday: [0, 6] (1)
- tm_yday: [0, 365] (2)
- tm_isdst: [-max(int), max(int)]
(1) gettmarg() handles bounds-checking.
(2) Python's acceptable range is one greater than the range in C,
thus need to check against automatic decrement by gettmarg().
*/
if (buf->tm_mon == -1)
@ -472,6 +472,7 @@ time_strftime(PyObject *self, PyObject *args)
#else
PyObject *format;
#endif
PyObject *format_arg;
size_t fmtlen, buflen;
time_char *outbuf = NULL;
size_t i;
@ -482,7 +483,7 @@ time_strftime(PyObject *self, PyObject *args)
/* Will always expect a unicode string to be passed as format.
Given that there's no str type anymore in py3k this seems safe.
*/
if (!PyArg_ParseTuple(args, "U|O:strftime", &format, &tup))
if (!PyArg_ParseTuple(args, "U|O:strftime", &format_arg, &tup))
return NULL;
if (tup == NULL) {
@ -501,13 +502,13 @@ time_strftime(PyObject *self, PyObject *args)
buf.tm_isdst = 1;
#ifdef HAVE_WCSFTIME
format = PyUnicode_AsWideCharString((PyUnicodeObject*)format, NULL);
format = PyUnicode_AsWideCharString((PyUnicodeObject*)format_arg, NULL);
if (format == NULL)
return NULL;
fmt = format;
#else
/* Convert the unicode string to an ascii one */
format = PyUnicode_AsEncodedString(format, TZNAME_ENCODING, NULL);
format = PyUnicode_AsEncodedString(format_arg, TZNAME_ENCODING, NULL);
if (format == NULL)
return NULL;
fmt = PyBytes_AS_STRING(format);