bpo-42576: Raise TypeError when passing in keyword arguments to GenericAlias (GH-23656)
Use `_PyArg_NoKeywords` instead of `_PyArg_NoKwnames` when checking the `kwds` tuple when creating `GenericAlias`. This fixes an interpreter crash when passing in keyword arguments to `GenericAlias`'s constructor.
Needs backport to 3.9.
Automerge-Triggered-By: GH:gvanrossum
(cherry picked from commit 804d6893b8
)
Co-authored-by: kj <28750310+Fidget-Spinner@users.noreply.github.com>
This commit is contained in:
parent
b630ca7bc1
commit
d5c029b1a9
|
@ -302,6 +302,11 @@ class BaseTest(unittest.TestCase):
|
|||
alias = t[int]
|
||||
self.assertEqual(ref(alias)(), alias)
|
||||
|
||||
def test_no_kwargs(self):
|
||||
# bpo-42576
|
||||
with self.assertRaises(TypeError):
|
||||
GenericAlias(bad=float)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
``types.GenericAlias`` will now raise a ``TypeError`` when attempting to
|
||||
initialize with a keyword argument. Previously, this would cause the
|
||||
interpreter to crash. Patch by Ken Jin.
|
|
@ -566,7 +566,7 @@ static PyGetSetDef ga_properties[] = {
|
|||
static PyObject *
|
||||
ga_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
if (!_PyArg_NoKwnames("GenericAlias", kwds)) {
|
||||
if (!_PyArg_NoKeywords("GenericAlias", kwds)) {
|
||||
return NULL;
|
||||
}
|
||||
if (!_PyArg_CheckPositional("GenericAlias", PyTuple_GET_SIZE(args), 2, 2)) {
|
||||
|
|
Loading…
Reference in New Issue