From 4621839206624d51ccd3a95c895a01535a8e7000 Mon Sep 17 00:00:00 2001 From: Ivy Xu Date: Wed, 17 Jun 2026 16:00:04 +0800 Subject: [PATCH] Fix missing `PyErr_NoMemory` in `typeobject.c` --- .../2026-06-17-15-59-57.gh-issue-151126.FEWx_Q.rst | 2 ++ Objects/typeobject.c | 1 + 2 files changed, 3 insertions(+) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2026-06-17-15-59-57.gh-issue-151126.FEWx_Q.rst diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-06-17-15-59-57.gh-issue-151126.FEWx_Q.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-06-17-15-59-57.gh-issue-151126.FEWx_Q.rst new file mode 100644 index 000000000000000..d6cb5d320bf1f64 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-06-17-15-59-57.gh-issue-151126.FEWx_Q.rst @@ -0,0 +1,2 @@ +Avoid possible crash in ``typeobject.c`` where a device has no memory left. +Now it properly raises a :exc:`MemoryError`. Patch by Ivy Xu. diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 881ed58d275ac7a..a7a4e9d8e383698 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -5492,6 +5492,7 @@ type_from_slots_or_spec( Py_ssize_t name_buf_len = strlen(it.name) + 1; _ht_tpname = PyMem_Malloc(name_buf_len); if (_ht_tpname == NULL) { + PyErr_NoMemory(); goto finally; } memcpy(_ht_tpname, it.name, name_buf_len);