From 2a820e2b9cf9e470d9f5342019fca3fe7f4ed7bc Mon Sep 17 00:00:00 2001 From: wangjingcun Date: Fri, 12 Dec 2025 14:18:20 +0800 Subject: [PATCH 1/3] fix typos in crossinterp.c and qsbr.c (#142612) --- Python/crossinterp.c | 2 +- Python/qsbr.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Python/crossinterp.c b/Python/crossinterp.c index 542253c14de9b8..b43f33fdf97771 100644 --- a/Python/crossinterp.c +++ b/Python/crossinterp.c @@ -3185,7 +3185,7 @@ _PyXI_InitTypes(PyInterpreterState *interp) "failed to initialize the cross-interpreter exception types"); } // We would initialize heap types here too but that leads to ref leaks. - // Instead, we intialize them in _PyXI_Init(). + // Instead, we initialize them in _PyXI_Init(). return _PyStatus_OK(); } diff --git a/Python/qsbr.c b/Python/qsbr.c index b2153bf9d67230..6bf5b75f346690 100644 --- a/Python/qsbr.c +++ b/Python/qsbr.c @@ -57,7 +57,7 @@ qsbr_allocate(struct _qsbr_shared *shared) return qsbr; } -// Initialize (or reintialize) the freelist of QSBR thread states +// Initialize (or reinitialize) the freelist of QSBR thread states static void initialize_new_array(struct _qsbr_shared *shared) { From af2b3e98d812d1ddd0354c0d560ed3e13ab51a8d Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Fri, 12 Dec 2025 11:16:55 +0100 Subject: [PATCH 2/3] Link listsort.txt in InternalDocs/README.md (#142619) --- InternalDocs/README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/InternalDocs/README.md b/InternalDocs/README.md index 06f67b3cfc124a..80744f30a5b591 100644 --- a/InternalDocs/README.md +++ b/InternalDocs/README.md @@ -29,8 +29,6 @@ Runtime Objects - [Frames](frames.md) -- [String Interning](string_interning.md) - Program Execution --- @@ -48,6 +46,14 @@ Program Execution - [Stack protection](stack_protection.md) +Built-in Types +--- + +- [String Interning](string_interning.md) + +- [List sort algorithm](../Objects/listsort.txt) + + Modules --- From be5e0dcdedb63185aaa3e2f711d14dc828cb3640 Mon Sep 17 00:00:00 2001 From: Sergey B Kirpichev Date: Fri, 12 Dec 2025 13:47:45 +0300 Subject: [PATCH 3/3] gh-142595: add type check for namedtuple call during decimal initialization (GH-142608) --- .../2025-12-12-02-56-26.gh-issue-142595.wHvTqq.rst | 2 ++ Modules/_decimal/_decimal.c | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2025-12-12-02-56-26.gh-issue-142595.wHvTqq.rst diff --git a/Misc/NEWS.d/next/Library/2025-12-12-02-56-26.gh-issue-142595.wHvTqq.rst b/Misc/NEWS.d/next/Library/2025-12-12-02-56-26.gh-issue-142595.wHvTqq.rst new file mode 100644 index 00000000000000..987e1ae8354b18 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-12-12-02-56-26.gh-issue-142595.wHvTqq.rst @@ -0,0 +1,2 @@ +Added type check during initialization of the :mod:`decimal` module to +prevent a crash in case of broken stdlib. Patch by Sergey B Kirpichev. diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c index 0484d9896a1c17..6ed8c0f3beb277 100644 --- a/Modules/_decimal/_decimal.c +++ b/Modules/_decimal/_decimal.c @@ -7753,10 +7753,14 @@ _decimal_exec(PyObject *m) /* DecimalTuple */ ASSIGN_PTR(collections, PyImport_ImportModule("collections")); - ASSIGN_PTR(state->DecimalTuple, (PyTypeObject *)PyObject_CallMethod(collections, - "namedtuple", "(ss)", "DecimalTuple", - "sign digits exponent")); - + obj = PyObject_CallMethod(collections, "namedtuple", "(ss)", "DecimalTuple", + "sign digits exponent"); + if (!PyType_Check(obj)) { + PyErr_SetString(PyExc_TypeError, + "type is expected from namedtuple call"); + goto error; + } + ASSIGN_PTR(state->DecimalTuple, (PyTypeObject *)obj); ASSIGN_PTR(obj, PyUnicode_FromString("decimal")); CHECK_INT(PyDict_SetItemString(state->DecimalTuple->tp_dict, "__module__", obj)); Py_CLEAR(obj);