]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-151126: Add missing `PyErr_NoMemory` in `_winapi.c` (#151588)
authorIvy Xu <fakeshadow1337@gmail.com>
Thu, 25 Jun 2026 10:47:25 +0000 (18:47 +0800)
committerGitHub <noreply@github.com>
Thu, 25 Jun 2026 10:47:25 +0000 (10:47 +0000)
Co-authored-by: sobolevn <mail@sobolevn.me>
Misc/NEWS.d/next/Core_and_Builtins/2026-06-17-16-46-07.gh-issue-151126.vhTL0T.rst [new file with mode: 0644]
Modules/_winapi.c

diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-06-17-16-46-07.gh-issue-151126.vhTL0T.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-06-17-16-46-07.gh-issue-151126.vhTL0T.rst
new file mode 100644 (file)
index 0000000..6f2d230
--- /dev/null
@@ -0,0 +1,2 @@
+Avoid possible crash in ``_winapi.c`` where a device has no memory left. Now
+it properly raises a :exc:`MemoryError`. Patch by Ivy Xu.
index 369a7400eb63b90aa93bf8e76838d347a7606330..5bbb02fe414bfa75bb96ce9f72b88a522877e62f 100644 (file)
@@ -1684,6 +1684,9 @@ _winapi_GetShortPathName_impl(PyObject *module, LPCWSTR path)
             }
             PyMem_Free((void *)buffer);
         }
+        else {
+            PyErr_NoMemory();
+        }
     } else {
         PyErr_SetFromWindowsErr(0);
     }
@@ -2394,6 +2397,7 @@ _winapi_BatchedWaitForMultipleObjects_impl(PyObject *module,
     while (i < nhandles) {
         BatchedWaitData *data = (BatchedWaitData*)PyMem_Malloc(sizeof(BatchedWaitData));
         if (!data) {
+            PyErr_NoMemory();
             goto error;
         }
         thread_data[thread_count++] = data;