]> granicus.if.org Git - python/commitdiff
PyArg_Parse*("Z#") raises an error for unknown type
authorVictor Stinner <victor.stinner@haypocalc.com>
Tue, 8 Jun 2010 21:45:51 +0000 (21:45 +0000)
committerVictor Stinner <victor.stinner@haypocalc.com>
Tue, 8 Jun 2010 21:45:51 +0000 (21:45 +0000)
instead of ignoring the error and leave the pointer to the string and the size
unchanged (not initialized).

Fix also the type in the error message of "Z", "Z#" and "Y" formats.

Python/getargs.c

index b4b5db283c69e3389ac4216b9a9ee6b7a4e94a0d..31b9d35716b46a22493b7c23a221fde87427b2ca 100644 (file)
@@ -1051,6 +1051,8 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
                 *p = PyUnicode_AS_UNICODE(arg);
                 STORE_SIZE(PyUnicode_GET_SIZE(arg));
             }
+            else
+                return converterr("str or None", arg, msgbuf, bufsize);
             format++;
         } else {
             Py_UNICODE **p = va_arg(*p_va, Py_UNICODE **);
@@ -1060,8 +1062,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
             else if (PyUnicode_Check(arg))
                 *p = PyUnicode_AS_UNICODE(arg);
             else
-                return converterr("string or None",
-                                  arg, msgbuf, bufsize);
+                return converterr("str or None", arg, msgbuf, bufsize);
         }
         break;
     }
@@ -1258,7 +1259,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
         if (PyByteArray_Check(arg))
             *p = arg;
         else
-            return converterr("buffer", arg, msgbuf, bufsize);
+            return converterr("bytearray", arg, msgbuf, bufsize);
         break;
     }