]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-126881: fix finalization of dtoa state (#126904)
authorKumar Aditya <kumaraditya@python.org>
Fri, 29 Nov 2024 09:47:16 +0000 (15:17 +0530)
committerGitHub <noreply@github.com>
Fri, 29 Nov 2024 09:47:16 +0000 (15:17 +0530)
Misc/NEWS.d/next/Core_and_Builtins/2024-11-16-11-11-35.gh-issue-126881.ijofLZ.rst [new file with mode: 0644]
Python/pylifecycle.c

diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2024-11-16-11-11-35.gh-issue-126881.ijofLZ.rst b/Misc/NEWS.d/next/Core_and_Builtins/2024-11-16-11-11-35.gh-issue-126881.ijofLZ.rst
new file mode 100644 (file)
index 0000000..13381c7
--- /dev/null
@@ -0,0 +1 @@
+Fix crash in finalization of dtoa state. Patch by Kumar Aditya.
index 23882d083844ac7543de798ebcaf9af827af86e2..ceb30e9f02df2c020b8d4058f15ee62adeb3de39 100644 (file)
@@ -1888,7 +1888,6 @@ finalize_interp_clear(PyThreadState *tstate)
     _PyXI_Fini(tstate->interp);
     _PyExc_ClearExceptionGroupType(tstate->interp);
     _Py_clear_generic_types(tstate->interp);
-    _PyDtoa_Fini(tstate->interp);
 
     /* Clear interpreter state and all thread states */
     _PyInterpreterState_Clear(tstate);
@@ -1910,6 +1909,9 @@ finalize_interp_clear(PyThreadState *tstate)
 
     finalize_interp_types(tstate->interp);
 
+    /* Finalize dtoa at last so that finalizers calling repr of float doesn't crash */
+    _PyDtoa_Fini(tstate->interp);
+
     /* Free any delayed free requests immediately */
     _PyMem_FiniDelayed(tstate->interp);