]> granicus.if.org Git - python/commitdiff
Cleanup getargs.c
authorVictor Stinner <victor.stinner@gmail.com>
Mon, 16 Jan 2017 22:16:47 +0000 (23:16 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Mon, 16 Jan 2017 22:16:47 +0000 (23:16 +0100)
Factorize argument checks in:

* vgetargskeywordsfast()
* vgetargskeywordsfast_impl()

Python/getargs.c

index 49888d11b66d2c91f444c820cebaee42acd05355..4c34b2a5d3ff6ff4fa74019e1036e2362074b2c4 100644 (file)
@@ -1453,14 +1453,6 @@ _PyArg_ParseTupleAndKeywordsFast(PyObject *args, PyObject *keywords,
     int retval;
     va_list va;
 
-    if ((args == NULL || !PyTuple_Check(args)) ||
-        (keywords != NULL && !PyDict_Check(keywords)) ||
-        parser == NULL)
-    {
-        PyErr_BadInternalCall();
-        return 0;
-    }
-
     va_start(va, parser);
     retval = vgetargskeywordsfast(args, keywords, parser, &va, 0);
     va_end(va);
@@ -1474,14 +1466,6 @@ _PyArg_ParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *keywords,
     int retval;
     va_list va;
 
-    if ((args == NULL || !PyTuple_Check(args)) ||
-        (keywords != NULL && !PyDict_Check(keywords)) ||
-        parser == NULL)
-    {
-        PyErr_BadInternalCall();
-        return 0;
-    }
-
     va_start(va, parser);
     retval = vgetargskeywordsfast(args, keywords, parser, &va, FLAG_SIZE_T);
     va_end(va);
@@ -1495,13 +1479,6 @@ _PyArg_ParseStack(PyObject **args, Py_ssize_t nargs, PyObject *kwnames,
     int retval;
     va_list va;
 
-    if ((kwnames != NULL && !PyTuple_Check(kwnames)) ||
-        parser == NULL)
-    {
-        PyErr_BadInternalCall();
-        return 0;
-    }
-
     va_start(va, parser);
     retval = vgetargskeywordsfast_impl(args, nargs, NULL, kwnames, parser, &va, 0);
     va_end(va);
@@ -1515,13 +1492,6 @@ _PyArg_ParseStack_SizeT(PyObject **args, Py_ssize_t nargs, PyObject *kwnames,
     int retval;
     va_list va;
 
-    if ((kwnames != NULL && !PyTuple_Check(kwnames)) ||
-        parser == NULL)
-    {
-        PyErr_BadInternalCall();
-        return 0;
-    }
-
     va_start(va, parser);
     retval = vgetargskeywordsfast_impl(args, nargs, NULL, kwnames, parser, &va, FLAG_SIZE_T);
     va_end(va);
@@ -1536,14 +1506,6 @@ _PyArg_VaParseTupleAndKeywordsFast(PyObject *args, PyObject *keywords,
     int retval;
     va_list lva;
 
-    if ((args == NULL || !PyTuple_Check(args)) ||
-        (keywords != NULL && !PyDict_Check(keywords)) ||
-        parser == NULL)
-    {
-        PyErr_BadInternalCall();
-        return 0;
-    }
-
     va_copy(lva, va);
 
     retval = vgetargskeywordsfast(args, keywords, parser, &lva, 0);
@@ -1558,14 +1520,6 @@ _PyArg_VaParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *keywords,
     int retval;
     va_list lva;
 
-    if ((args == NULL || !PyTuple_Check(args)) ||
-        (keywords != NULL && !PyDict_Check(keywords)) ||
-        parser == NULL)
-    {
-        PyErr_BadInternalCall();
-        return 0;
-    }
-
     va_copy(lva, va);
 
     retval = vgetargskeywordsfast(args, keywords, parser, &lva, FLAG_SIZE_T);
@@ -2010,12 +1964,20 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
     freelist.entries_malloced = 0;
 
     assert(keywords == NULL || PyDict_Check(keywords));
-    assert(kwnames == NULL || PyTuple_Check(kwnames));
     assert((keywords != NULL || kwnames != NULL)
            || (keywords == NULL && kwnames == NULL));
-    assert(parser != NULL);
     assert(p_va != NULL);
 
+    if (parser == NULL) {
+        PyErr_BadInternalCall();
+        return 0;
+    }
+
+    if (kwnames != NULL && !PyTuple_Check(kwnames)) {
+        PyErr_BadInternalCall();
+        return 0;
+    }
+
     if (!parser_init(parser)) {
         return 0;
     }
@@ -2204,7 +2166,13 @@ vgetargskeywordsfast(PyObject *args, PyObject *keywords,
     PyObject **stack;
     Py_ssize_t nargs;
 
-    assert(args != NULL && PyTuple_Check(args));
+    if (args == NULL
+        || !PyTuple_Check(args)
+        || (keywords != NULL && !PyDict_Check(keywords)))
+    {
+        PyErr_BadInternalCall();
+        return 0;
+    }
 
     stack = &PyTuple_GET_ITEM(args, 0);
     nargs = PyTuple_GET_SIZE(args);