mirror of https://github.com/python/cpython
gh-92206: Improve scoping of sqlite3 register cursor helper (#92212)
This commit is contained in:
parent
628d6e8270
commit
1d4a9a45b7
|
@ -371,32 +371,6 @@ connection_dealloc(pysqlite_Connection *self)
|
|||
Py_DECREF(tp);
|
||||
}
|
||||
|
||||
/*
|
||||
* Registers a cursor with the connection.
|
||||
*
|
||||
* 0 => error; 1 => ok
|
||||
*/
|
||||
int pysqlite_connection_register_cursor(pysqlite_Connection* connection, PyObject* cursor)
|
||||
{
|
||||
PyObject* weakref;
|
||||
|
||||
weakref = PyWeakref_NewRef((PyObject*)cursor, NULL);
|
||||
if (!weakref) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (PyList_Append(connection->cursors, weakref) != 0) {
|
||||
Py_CLEAR(weakref);
|
||||
goto error;
|
||||
}
|
||||
|
||||
Py_DECREF(weakref);
|
||||
|
||||
return 1;
|
||||
error:
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*[clinic input]
|
||||
_sqlite3.Connection.cursor as pysqlite_connection_cursor
|
||||
|
||||
|
|
|
@ -99,7 +99,6 @@ typedef struct
|
|||
PyObject* NotSupportedError;
|
||||
} pysqlite_Connection;
|
||||
|
||||
int pysqlite_connection_register_cursor(pysqlite_Connection* connection, PyObject* cursor);
|
||||
int pysqlite_check_thread(pysqlite_Connection* self);
|
||||
int pysqlite_check_connection(pysqlite_Connection* con);
|
||||
|
||||
|
|
|
@ -35,6 +35,28 @@ class _sqlite3.Cursor "pysqlite_Cursor *" "clinic_state()->CursorType"
|
|||
[clinic start generated code]*/
|
||||
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=3c5b8115c5cf30f1]*/
|
||||
|
||||
/*
|
||||
* Registers a cursor with the connection.
|
||||
*
|
||||
* 0 => error; 1 => ok
|
||||
*/
|
||||
static int
|
||||
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;
|
||||
}
|
||||
|
||||
/*[clinic input]
|
||||
_sqlite3.Cursor.__init__ as pysqlite_cursor_init
|
||||
|
||||
|
@ -70,7 +92,7 @@ pysqlite_cursor_init_impl(pysqlite_Cursor *self,
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (!pysqlite_connection_register_cursor(connection, (PyObject*)self)) {
|
||||
if (!register_cursor(connection, (PyObject *)self)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue