https://github.com/python/cpython/commit/cbcb5265bfaf80af386faa8858359bb6f15cb77d
commit: cbcb5265bfaf80af386faa8858359bb6f15cb77d
branch: 3.13
author: Miss Islington (bot) <[email protected]>
committer: Fidget-Spinner <[email protected]>
date: 2024-06-15T15:06:54Z
summary:

[3.13] gh-117657: Make PyType_HasFeature (exported version) atomic (GH-120484) 
(#120554)

gh-117657: Make PyType_HasFeature (exported version) atomic (GH-120484)

Make PyType_HasFeature (exported version) atomic
(cherry picked from commit 6f63dfff6f493b405f3422210a168369e1e7a35d)

Co-authored-by: Ken Jin <[email protected]>

files:
M Include/object.h
M Objects/typeobject.c

diff --git a/Include/object.h b/Include/object.h
index a687bf2f7cdd74..7aaa8da8e8d154 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -1238,7 +1238,11 @@ PyType_HasFeature(PyTypeObject *type, unsigned long 
feature)
     // PyTypeObject is opaque in the limited C API
     flags = PyType_GetFlags(type);
 #else
-    flags = type->tp_flags;
+#   ifdef Py_GIL_DISABLED
+        flags = _Py_atomic_load_ulong_relaxed(&type->tp_flags);
+#   else
+        flags = type->tp_flags;
+#   endif
 #endif
     return ((flags & feature) != 0);
 }
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 1f6c2828f1c697..1123ef6eb3d9b2 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -3435,7 +3435,7 @@ type_init(PyObject *cls, PyObject *args, PyObject *kwds)
 unsigned long
 PyType_GetFlags(PyTypeObject *type)
 {
-    return type->tp_flags;
+    return FT_ATOMIC_LOAD_ULONG_RELAXED(type->tp_flags);
 }
 
 

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to