https://github.com/python/cpython/commit/2f381f5a90474d9dad12e1e4946f348dd4b513bc
commit: 2f381f5a90474d9dad12e1e4946f348dd4b513bc
branch: main
author: Sergey B Kirpichev <[email protected]>
committer: kumaraditya303 <[email protected]>
date: 2026-07-30T15:02:59Z
summary:
gh-154037: Fix race in the hash(Decimal) (#154045)
files:
M Modules/_decimal/_decimal.c
diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c
index 6fbce0ed85e695d..ac3ffb23248f342 100644
--- a/Modules/_decimal/_decimal.c
+++ b/Modules/_decimal/_decimal.c
@@ -5935,11 +5935,13 @@ static Py_hash_t
dec_hash(PyObject *op)
{
PyDecObject *self = _PyDecObject_CAST(op);
- if (self->hash == -1) {
- self->hash = _dec_hash(self);
- }
+ Py_hash_t hash = FT_ATOMIC_LOAD_SSIZE_RELAXED(self->hash);
- return self->hash;
+ if (hash == -1) {
+ hash = _dec_hash(self);
+ FT_ATOMIC_STORE_SSIZE_RELAXED(self->hash, hash);
+ }
+ return hash;
}
/*[clinic input]
_______________________________________________
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]