summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Include/object.h17
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2024-04-09-11-31-25.gh-issue-115776.5Nthd0.rst2
2 files changed, 9 insertions, 10 deletions
diff --git a/Include/object.h b/Include/object.h
index 1344332..ffcacf1 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -115,8 +115,11 @@ check by comparing the reference count field to the immortality reference count.
// Kept for backward compatibility. It was needed by Py_TRACE_REFS build.
#define _PyObject_EXTRA_INIT
-// Make all internal uses of PyObject_HEAD_INIT immortal while preserving the
-// C-API expectation that the refcnt will be set to 1.
+/* Make all uses of PyObject_HEAD_INIT immortal.
+ *
+ * Statically allocated objects might be shared between
+ * interpreters, so must be marked as immortal.
+ */
#if defined(Py_GIL_DISABLED)
#define PyObject_HEAD_INIT(type) \
{ \
@@ -128,19 +131,13 @@ check by comparing the reference count field to the immortality reference count.
0, \
(type), \
},
-#elif defined(Py_BUILD_CORE)
+#else
#define PyObject_HEAD_INIT(type) \
{ \
{ _Py_IMMORTAL_REFCNT }, \
(type) \
},
-#else
-#define PyObject_HEAD_INIT(type) \
- { \
- { 1 }, \
- (type) \
- },
-#endif /* Py_BUILD_CORE */
+#endif
#define PyVarObject_HEAD_INIT(type, size) \
{ \
diff --git a/Misc/NEWS.d/next/Core and Builtins/2024-04-09-11-31-25.gh-issue-115776.5Nthd0.rst b/Misc/NEWS.d/next/Core and Builtins/2024-04-09-11-31-25.gh-issue-115776.5Nthd0.rst
new file mode 100644
index 0000000..5fc0080
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2024-04-09-11-31-25.gh-issue-115776.5Nthd0.rst
@@ -0,0 +1,2 @@
+Statically allocated objects are, by definition, immortal so must be
+marked as such regardless of whether they are in extension modules or not.