Skip to content

Commit dadbca1

Browse files
committed
Cleanup getargs.c
Factorize argument checks in: * vgetargskeywordsfast() * vgetargskeywordsfast_impl()
1 parent 487d4f2 commit dadbca1

1 file changed

Lines changed: 17 additions & 49 deletions

File tree

Python/getargs.c

Lines changed: 17 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1453,14 +1453,6 @@ _PyArg_ParseTupleAndKeywordsFast(PyObject *args, PyObject *keywords,
14531453
int retval;
14541454
va_list va;
14551455

1456-
if ((args == NULL || !PyTuple_Check(args)) ||
1457-
(keywords != NULL && !PyDict_Check(keywords)) ||
1458-
parser == NULL)
1459-
{
1460-
PyErr_BadInternalCall();
1461-
return 0;
1462-
}
1463-
14641456
va_start(va, parser);
14651457
retval = vgetargskeywordsfast(args, keywords, parser, &va, 0);
14661458
va_end(va);
@@ -1474,14 +1466,6 @@ _PyArg_ParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *keywords,
14741466
int retval;
14751467
va_list va;
14761468

1477-
if ((args == NULL || !PyTuple_Check(args)) ||
1478-
(keywords != NULL && !PyDict_Check(keywords)) ||
1479-
parser == NULL)
1480-
{
1481-
PyErr_BadInternalCall();
1482-
return 0;
1483-
}
1484-
14851469
va_start(va, parser);
14861470
retval = vgetargskeywordsfast(args, keywords, parser, &va, FLAG_SIZE_T);
14871471
va_end(va);
@@ -1495,13 +1479,6 @@ _PyArg_ParseStack(PyObject **args, Py_ssize_t nargs, PyObject *kwnames,
14951479
int retval;
14961480
va_list va;
14971481

1498-
if ((kwnames != NULL && !PyTuple_Check(kwnames)) ||
1499-
parser == NULL)
1500-
{
1501-
PyErr_BadInternalCall();
1502-
return 0;
1503-
}
1504-
15051482
va_start(va, parser);
15061483
retval = vgetargskeywordsfast_impl(args, nargs, NULL, kwnames, parser, &va, 0);
15071484
va_end(va);
@@ -1515,13 +1492,6 @@ _PyArg_ParseStack_SizeT(PyObject **args, Py_ssize_t nargs, PyObject *kwnames,
15151492
int retval;
15161493
va_list va;
15171494

1518-
if ((kwnames != NULL && !PyTuple_Check(kwnames)) ||
1519-
parser == NULL)
1520-
{
1521-
PyErr_BadInternalCall();
1522-
return 0;
1523-
}
1524-
15251495
va_start(va, parser);
15261496
retval = vgetargskeywordsfast_impl(args, nargs, NULL, kwnames, parser, &va, FLAG_SIZE_T);
15271497
va_end(va);
@@ -1536,14 +1506,6 @@ _PyArg_VaParseTupleAndKeywordsFast(PyObject *args, PyObject *keywords,
15361506
int retval;
15371507
va_list lva;
15381508

1539-
if ((args == NULL || !PyTuple_Check(args)) ||
1540-
(keywords != NULL && !PyDict_Check(keywords)) ||
1541-
parser == NULL)
1542-
{
1543-
PyErr_BadInternalCall();
1544-
return 0;
1545-
}
1546-
15471509
va_copy(lva, va);
15481510

15491511
retval = vgetargskeywordsfast(args, keywords, parser, &lva, 0);
@@ -1558,14 +1520,6 @@ _PyArg_VaParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *keywords,
15581520
int retval;
15591521
va_list lva;
15601522

1561-
if ((args == NULL || !PyTuple_Check(args)) ||
1562-
(keywords != NULL && !PyDict_Check(keywords)) ||
1563-
parser == NULL)
1564-
{
1565-
PyErr_BadInternalCall();
1566-
return 0;
1567-
}
1568-
15691523
va_copy(lva, va);
15701524

15711525
retval = vgetargskeywordsfast(args, keywords, parser, &lva, FLAG_SIZE_T);
@@ -2010,12 +1964,20 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
20101964
freelist.entries_malloced = 0;
20111965

20121966
assert(keywords == NULL || PyDict_Check(keywords));
2013-
assert(kwnames == NULL || PyTuple_Check(kwnames));
20141967
assert((keywords != NULL || kwnames != NULL)
20151968
|| (keywords == NULL && kwnames == NULL));
2016-
assert(parser != NULL);
20171969
assert(p_va != NULL);
20181970

1971+
if (parser == NULL) {
1972+
PyErr_BadInternalCall();
1973+
return 0;
1974+
}
1975+
1976+
if (kwnames != NULL && !PyTuple_Check(kwnames)) {
1977+
PyErr_BadInternalCall();
1978+
return 0;
1979+
}
1980+
20191981
if (!parser_init(parser)) {
20201982
return 0;
20211983
}
@@ -2204,7 +2166,13 @@ vgetargskeywordsfast(PyObject *args, PyObject *keywords,
22042166
PyObject **stack;
22052167
Py_ssize_t nargs;
22062168

2207-
assert(args != NULL && PyTuple_Check(args));
2169+
if (args == NULL
2170+
|| !PyTuple_Check(args)
2171+
|| (keywords != NULL && !PyDict_Check(keywords)))
2172+
{
2173+
PyErr_BadInternalCall();
2174+
return 0;
2175+
}
22082176

22092177
stack = &PyTuple_GET_ITEM(args, 0);
22102178
nargs = PyTuple_GET_SIZE(args);

0 commit comments

Comments
 (0)