summaryrefslogtreecommitdiffstats
path: root/Modules/_sqlite/connection.c
diff options
context:
space:
mode:
authormpage <mpage@meta.com>2024-04-08 14:58:38 (GMT)
committerGitHub <noreply@github.com>2024-04-08 14:58:38 (GMT)
commitdf7317904849a41d51db39d92c5d431a18e22637 (patch)
treee7dddcb5006cb6f50b9f47477217043157a42e01 /Modules/_sqlite/connection.c
parente16062dd3428a5846344e0a8c6ee2f352d34ce1b (diff)
downloadcpython-df7317904849a41d51db39d92c5d431a18e22637.zip
cpython-df7317904849a41d51db39d92c5d431a18e22637.tar.gz
cpython-df7317904849a41d51db39d92c5d431a18e22637.tar.bz2
gh-111926: Make weakrefs thread-safe in free-threaded builds (#117168)
Most mutable data is protected by a striped lock that is keyed on the referenced object's address. The weakref's hash is protected using the weakref's per-object lock. Note that this only affects free-threaded builds. Apart from some minor refactoring, the added code is all either gated by `ifdef`s or is a no-op (e.g. `Py_BEGIN_CRITICAL_SECTION`).
Diffstat (limited to 'Modules/_sqlite/connection.c')
-rw-r--r--Modules/_sqlite/connection.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c
index f97afcf..74984ca 100644
--- a/Modules/_sqlite/connection.c
+++ b/Modules/_sqlite/connection.c
@@ -38,7 +38,7 @@
#include "pycore_modsupport.h" // _PyArg_NoKeywords()
#include "pycore_pyerrors.h" // _PyErr_ChainExceptions1()
#include "pycore_pylifecycle.h" // _Py_IsInterpreterFinalizing()
-#include "pycore_weakref.h" // _PyWeakref_IS_DEAD()
+#include "pycore_weakref.h"
#include <stdbool.h>
@@ -1065,7 +1065,7 @@ static void _pysqlite_drop_unused_cursor_references(pysqlite_Connection* self)
for (Py_ssize_t i = 0; i < PyList_Size(self->cursors); i++) {
PyObject* weakref = PyList_GetItem(self->cursors, i);
- if (_PyWeakref_IS_DEAD(weakref)) {
+ if (_PyWeakref_IsDead(weakref)) {
continue;
}
if (PyList_Append(new_list, weakref) != 0) {