Skip to content

Dead code in CALL_FUNCTION_EX opcode handler #96751

Closed
@sobolevn

Description

@sobolevn

I am talking about these lines:

cpython/Python/ceval.c

Lines 4722 to 4734 in a36235d

if (!PyDict_CheckExact(kwargs)) {
PyObject *d = PyDict_New();
if (d == NULL)
goto error;
if (_PyDict_MergeEx(d, kwargs, 2) < 0) {
Py_DECREF(d);
format_kwargs_error(tstate, SECOND(), kwargs);
Py_DECREF(kwargs);
goto error;
}
Py_DECREF(kwargs);
kwargs = d;
}

They are not ever called, because after #18141 all ** dict unpacking is handled in DICT_MERGE opcode.

This was found while working on #94808 but I think that it deserves a separate issue.

PR is on its way.

Metadata

Metadata

Assignees

Labels

interpreter-core(Objects, Python, Grammar, and Parser dirs)type-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions