mirror of https://github.com/python/cpython
[gh-117657] _Py_MergeZeroLocalRefcount isn't loading ob_ref_shared with strong enough semantics (#118111)
Use acquire for load of ob_ref_shared
This commit is contained in:
parent
b624490dee
commit
b45af00bad
|
@ -374,7 +374,7 @@ _Py_MergeZeroLocalRefcount(PyObject *op)
|
||||||
assert(op->ob_ref_local == 0);
|
assert(op->ob_ref_local == 0);
|
||||||
|
|
||||||
_Py_atomic_store_uintptr_relaxed(&op->ob_tid, 0);
|
_Py_atomic_store_uintptr_relaxed(&op->ob_tid, 0);
|
||||||
Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&op->ob_ref_shared);
|
Py_ssize_t shared = _Py_atomic_load_ssize_acquire(&op->ob_ref_shared);
|
||||||
if (shared == 0) {
|
if (shared == 0) {
|
||||||
// Fast-path: shared refcount is zero (including flags)
|
// Fast-path: shared refcount is zero (including flags)
|
||||||
_Py_Dealloc(op);
|
_Py_Dealloc(op);
|
||||||
|
|
Loading…
Reference in New Issue