-
-
Notifications
You must be signed in to change notification settings - Fork 34k
Open
Open
Copy link
Labels
extension-modulesC modules in the Modules dirC modules in the Modules dirtopic-sqlite3type-featureA feature request or enhancementA feature request or enhancement
Description
The sqlite3 Connection object creates a list to hold weakrefs to Cursors, and each cursor registers itself in that list when it's created.
cpython/Modules/_sqlite/connection.c
Lines 289 to 293 in b625601
| PyObject *cursors = PyList_New(0); | |
| if (cursors == NULL) { | |
| Py_DECREF(statement_cache); | |
| goto error; | |
| } |
cpython/Modules/_sqlite/cursor.c
Lines 108 to 122 in b625601
| register_cursor(pysqlite_Connection *connection, PyObject *cursor) | |
| { | |
| PyObject *weakref = PyWeakref_NewRef((PyObject *)cursor, NULL); | |
| if (weakref == NULL) { | |
| return 0; | |
| } | |
| if (PyList_Append(connection->cursors, weakref) < 0) { | |
| Py_CLEAR(weakref); | |
| return 0; | |
| } | |
| Py_DECREF(weakref); | |
| return 1; | |
| } |
There's code to periodically clear out dead weakrefs from the list, but nothing I can see that actually uses it. It looks like the use was removed in #26026.
Linked PRs
Metadata
Metadata
Assignees
Labels
extension-modulesC modules in the Modules dirC modules in the Modules dirtopic-sqlite3type-featureA feature request or enhancementA feature request or enhancement
Projects
Status
No status