Issue #25029: MemoryError in test_strptime
This commit is contained in:
parent
c1635e497d
commit
97cded934f
|
@ -648,9 +648,6 @@ time_strftime(PyObject *self, PyObject *args)
|
|||
* will be ahead of time...
|
||||
*/
|
||||
for (i = 1024; ; i += i) {
|
||||
#if defined _MSC_VER && _MSC_VER >= 1400 && defined(__STDC_SECURE_LIB__)
|
||||
int err;
|
||||
#endif
|
||||
outbuf = (time_char *)PyMem_Malloc(i*sizeof(time_char));
|
||||
if (outbuf == NULL) {
|
||||
PyErr_NoMemory();
|
||||
|
@ -660,10 +657,14 @@ time_strftime(PyObject *self, PyObject *args)
|
|||
buflen = format_time(outbuf, i, fmt, &buf);
|
||||
_Py_END_SUPPRESS_IPH
|
||||
#if defined _MSC_VER && _MSC_VER >= 1400 && defined(__STDC_SECURE_LIB__)
|
||||
err = errno;
|
||||
/* VisualStudio .NET 2005 does this properly */
|
||||
if (buflen == 0 && errno == EINVAL) {
|
||||
PyErr_SetString(PyExc_ValueError, "Invalid format string");
|
||||
PyMem_Free(outbuf);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
if (buflen > 0 || fmtlen == 0 ||
|
||||
(fmtlen > 4 && i >= 256 * fmtlen)) {
|
||||
if (buflen > 0 || i >= 256 * fmtlen) {
|
||||
/* If the buffer is 256 times as long as the format,
|
||||
it's probably not failing for lack of room!
|
||||
More likely, the format yields an empty result,
|
||||
|
@ -679,13 +680,6 @@ time_strftime(PyObject *self, PyObject *args)
|
|||
break;
|
||||
}
|
||||
PyMem_Free(outbuf);
|
||||
#if defined _MSC_VER && _MSC_VER >= 1400 && defined(__STDC_SECURE_LIB__)
|
||||
/* VisualStudio .NET 2005 does this properly */
|
||||
if (buflen == 0 && err == EINVAL) {
|
||||
PyErr_SetString(PyExc_ValueError, "Invalid format string");
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#ifdef HAVE_WCSFTIME
|
||||
PyMem_Free(format);
|
||||
|
|
Loading…
Reference in New Issue