[Python-checkins] cpython (3.5): Issue #25029: MemoryError in test_strptime

larry.hastings python-checkins at python.org
Wed Sep 9 15:56:35 CEST 2015


https://hg.python.org/cpython/rev/bd7aed300a1b
changeset:   97813:bd7aed300a1b
branch:      3.5
parent:      97731:7d320c3bf9c6
user:        Steve Dower <steve.dower at microsoft.com>
date:        Tue Sep 08 19:12:51 2015 -0700
summary:
  Issue #25029: MemoryError in test_strptime

files:
  Modules/timemodule.c |  20 +++++++-------------
  1 files changed, 7 insertions(+), 13 deletions(-)


diff --git a/Modules/timemodule.c b/Modules/timemodule.c
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -648,9 +648,6 @@
      * 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 @@
         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 @@
             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);

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list