]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Minor code cleanup for PyArg_UnpackTuple.
authorRaymond Hettinger <python@rcn.com>
Sat, 26 Mar 2016 10:02:48 +0000 (03:02 -0700)
committerRaymond Hettinger <python@rcn.com>
Sat, 26 Mar 2016 10:02:48 +0000 (03:02 -0700)
Python/getargs.c

index 66a0c0049b63f281d3c6e5522ba6d84780bbe13a..05ec27bfbb194ac1ee02b82e7bf4fef4289112a6 100644 (file)
@@ -1771,16 +1771,9 @@ PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t m
     PyObject **o;
     va_list vargs;
 
-#ifdef HAVE_STDARG_PROTOTYPES
-    va_start(vargs, max);
-#else
-    va_start(vargs);
-#endif
-
     assert(min >= 0);
     assert(min <= max);
     if (!PyTuple_Check(args)) {
-        va_end(vargs);
         PyErr_SetString(PyExc_SystemError,
             "PyArg_UnpackTuple() argument list is not a tuple");
         return 0;
@@ -1798,9 +1791,10 @@ PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t m
                 "unpacked tuple should have %s%zd elements,"
                 " but has %zd",
                 (min == max ? "" : "at least "), min, l);
-        va_end(vargs);
         return 0;
     }
+    if (l == 0)
+        return 1;
     if (l > max) {
         if (name != NULL)
             PyErr_Format(
@@ -1813,9 +1807,14 @@ PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t m
                 "unpacked tuple should have %s%zd elements,"
                 " but has %zd",
                 (min == max ? "" : "at most "), max, l);
-        va_end(vargs);
         return 0;
     }
+
+#ifdef HAVE_STDARG_PROTOTYPES
+    va_start(vargs, max);
+#else
+    va_start(vargs);
+#endif
     for (i = 0; i < l; i++) {
         o = va_arg(vargs, PyObject **);
         *o = PyTuple_GET_ITEM(args, i);