Skip to content

Handle errors correctly in os_waitid_impl in posixmodule #116448

Description

@sobolevn

Bug report

Any possible first errors will be overwritten by following ones:

cpython/Modules/posixmodule.c

Lines 9731 to 9745 in 40b79ef

result = PyStructSequence_New((PyTypeObject *)WaitidResultType);
if (!result)
return NULL;
PyStructSequence_SET_ITEM(result, 0, PyLong_FromPid(si.si_pid));
PyStructSequence_SET_ITEM(result, 1, _PyLong_FromUid(si.si_uid));
PyStructSequence_SET_ITEM(result, 2, PyLong_FromLong((long)(si.si_signo)));
PyStructSequence_SET_ITEM(result, 3, PyLong_FromLong((long)(si.si_status)));
PyStructSequence_SET_ITEM(result, 4, PyLong_FromLong((long)(si.si_code)));
if (PyErr_Occurred()) {
Py_DECREF(result);
return NULL;
}
return result;

I propose to use our custom macro for this as well.

Linked PRs

Metadata

Metadata

Assignees

Labels

extension-modulesC modules in the Modules dirtype-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions