]> granicus.if.org Git - python/commitdiff
detect non-ascii characters much earlier (plugs ref leak)
authorBenjamin Peterson <benjamin@python.org>
Sun, 12 Sep 2010 03:40:54 +0000 (03:40 +0000)
committerBenjamin Peterson <benjamin@python.org>
Sun, 12 Sep 2010 03:40:54 +0000 (03:40 +0000)
Objects/unicodeobject.c

index c010b1b246cff91c46c7ac7fadfd0a62ab2477c4..3b0a66ae743ee790cb904f895978f0c03d48de25 100644 (file)
@@ -764,6 +764,13 @@ PyUnicode_FromFormatV(const char *format, va_list vargs)
              if (*f == 's')
                  ++callcount;
          }
+         else if (128 <= (unsigned char)*f) {
+             PyErr_Format(PyExc_ValueError,
+                "PyUnicode_FromFormatV() expects an ASCII-encoded format "
+                "string, got a non-ascii byte: 0x%02x",
+                (unsigned char)*f);
+             return NULL;
+         }
     }
     /* step 2: allocate memory for the results of
      * PyObject_Str()/PyObject_Repr()/PyUnicode_DecodeUTF8() calls */
@@ -1103,13 +1110,6 @@ PyUnicode_FromFormatV(const char *format, va_list vargs)
                 goto end;
             }
         }
-        else if (128 <= (unsigned char)*f) {
-            PyErr_Format(PyExc_ValueError,
-                "PyUnicode_FromFormatV() expects an ASCII-encoded format "
-                "string, got a non-ascii byte: 0x%02x",
-                (unsigned char)*f);
-            goto fail;
-        }
         else
             *s++ = *f;
     }