From f4f5d1683582202ce806a2829abb5a5e03df4b86 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Tue, 9 Jun 2026 16:02:47 +0300 Subject: [PATCH] gh-151126: Add missing `PyErr_NoMemory` in `_winapi` module --- .../2026-06-09-10-28-30.gh-issue-151126.DKa6Sl.rst | 8 ++++++-- Modules/_winapi.c | 5 ++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-06-09-10-28-30.gh-issue-151126.DKa6Sl.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-06-09-10-28-30.gh-issue-151126.DKa6Sl.rst index 3f699a50d7a42b..81e87e539865ce 100644 --- a/Misc/NEWS.d/next/Core_and_Builtins/2026-06-09-10-28-30.gh-issue-151126.DKa6Sl.rst +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-06-09-10-28-30.gh-issue-151126.DKa6Sl.rst @@ -1,3 +1,7 @@ Fix a crash, when there's no memory left on a device, -which happened in code compilation. -Now it raises a proper :exc:`MemoryError`. +which happened in: + +- code compilation +- :func:`!_winapi.CreateProcess` + +Now these places raise proper :exc:`MemoryError` errors. diff --git a/Modules/_winapi.c b/Modules/_winapi.c index fc2c0890468a6b..369a7400eb63b9 100644 --- a/Modules/_winapi.c +++ b/Modules/_winapi.c @@ -1194,8 +1194,10 @@ gethandlelist(PyObject *mapping, const char *name, Py_ssize_t *size) } ret = PyMem_Malloc(*size); - if (ret == NULL) + if (ret == NULL) { + PyErr_NoMemory(); goto cleanup; + } for (i = 0; i < PySequence_Fast_GET_SIZE(value_fast); i++) { ret[i] = PYNUM_TO_HANDLE(PySequence_Fast_GET_ITEM(value_fast, i)); @@ -1278,6 +1280,7 @@ getattributelist(PyObject *obj, const char *name, AttributeList *attribute_list) attribute_list->attribute_list = PyMem_Malloc(attribute_list_size); if (attribute_list->attribute_list == NULL) { ret = -1; + PyErr_NoMemory(); goto cleanup; }