[Python-checkins] cpython: Cleanup getargs.c

victor.stinner python-checkins at python.org
Mon Jan 16 17:58:00 EST 2017


https://hg.python.org/cpython/rev/7203b2cf233f
changeset:   106171:7203b2cf233f
user:        Victor Stinner <victor.stinner at gmail.com>
date:        Mon Jan 16 23:16:47 2017 +0100
summary:
  Cleanup getargs.c

Factorize argument checks in:

* vgetargskeywordsfast()
* vgetargskeywordsfast_impl()

files:
  Python/getargs.c |  66 +++++++++--------------------------
  1 files changed, 17 insertions(+), 49 deletions(-)


diff --git a/Python/getargs.c b/Python/getargs.c
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -1453,14 +1453,6 @@
     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 @@
     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 @@
     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 @@
     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 @@
     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 @@
     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 @@
     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 @@
     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);

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


More information about the Python-checkins mailing list