summaryrefslogtreecommitdiff
path: root/Python/getargs.c
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2017-01-16 23:16:47 +0100
committerVictor Stinner <victor.stinner@gmail.com>2017-01-16 23:16:47 +0100
commitcbfd2d5359b8ec44360fafd769b122ce097228f9 (patch)
treeb257f758974a53eb664e14c61ad3ab5ac2fa57f2 /Python/getargs.c
parent39c529ee7093240a5b79bdde6cca813218d41b81 (diff)
downloadcpython-cbfd2d5359b8ec44360fafd769b122ce097228f9.tar.gz
Cleanup getargs.c
Factorize argument checks in: * vgetargskeywordsfast() * vgetargskeywordsfast_impl()
Diffstat (limited to 'Python/getargs.c')
-rw-r--r--Python/getargs.c66
1 files changed, 17 insertions, 49 deletions
diff --git a/Python/getargs.c b/Python/getargs.c
index 49888d11b6..4c34b2a5d3 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -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);