Issue #28086: Single var-positional argument of tuple subtype was passed

unscathed to the C-defined function.  Now it is converted to exact tuple.
This commit is contained in:
Serhiy Storchaka 2016-09-22 19:41:20 +03:00
parent 5ed548715a
commit 63dc548109
3 changed files with 6 additions and 3 deletions

View file

@ -3310,7 +3310,7 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag)
}
callargs = POP();
func = TOP();
if (!PyTuple_Check(callargs)) {
if (!PyTuple_CheckExact(callargs)) {
if (Py_TYPE(callargs)->tp_iter == NULL &&
!PySequence_Check(callargs)) {
PyErr_Format(PyExc_TypeError,
@ -3327,7 +3327,7 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag)
goto error;
}
}
assert(PyTuple_Check(callargs));
assert(PyTuple_CheckExact(callargs));
result = do_call_core(func, callargs, kwargs);
Py_DECREF(func);