Skip to content

Argument Clinic: vararg + kw-only crash #110864

Closed
@sobolevn

Description

@sobolevn

Bug report

Originally found in #110782 by @mxschmitt and @JelleZijlstra

This is the reproducer:

/*[clinic input]
null_or_tuple_for_varargs

    name: object
    *constraints: object
    covariant: bool = False

[clinic start generated code]*/

static PyObject *
null_or_tuple_for_varargs_impl(PyObject *module, PyObject *name,
                               PyObject *constraints, int covariant)
/*[clinic end generated code: output=a785b35421358983 input=017dc120cb6e651b]*/
{
    assert(name != NULL);
    assert(constraints != NULL);
    assert(covariant == 0 || covariant == 1);
    Py_RETURN_NONE;
}

When called with name=..., it crashes:

>>> import _testclinic
>>> _testclinic.null_or_tuple_for_varargs('a')

>>> _testclinic.null_or_tuple_for_varargs(name='a')
Assertion failed: (constraints != NULL), function null_or_tuple_for_varargs_impl, file _testclinic.c, line 1148.
[1]    30808 abort      ./python.exe

I have a PR ready with the fix.
CC @erlend-aasland as AC maintainer.

Linked PRs

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions