summaryrefslogtreecommitdiffstats
path: root/Modules/timemodule.c
diff options
context:
space:
mode:
authorSteve Dower <steve.dower@microsoft.com>2015-09-09 02:12:51 (GMT)
committerSteve Dower <steve.dower@microsoft.com>2015-09-09 02:12:51 (GMT)
commit97cded934f7511cdad33f1f883f549aebf4e191f (patch)
treed91d41d2e8d4b2a9e51369d9734d993fff467738 /Modules/timemodule.c
parentc1635e497d060bae076127152801af2b2ec552ff (diff)
downloadcpython-97cded934f7511cdad33f1f883f549aebf4e191f.zip
cpython-97cded934f7511cdad33f1f883f549aebf4e191f.tar.gz
cpython-97cded934f7511cdad33f1f883f549aebf4e191f.tar.bz2
Issue #25029: MemoryError in test_strptime
Diffstat (limited to 'Modules/timemodule.c')
-rw-r--r--Modules/timemodule.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index eca67d9..9de3c84 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -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);