]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-92206: Improve scoping of sqlite3 register cursor helper (#92212)
authorErlend Egeberg Aasland <erlend.aasland@protonmail.com>
Tue, 3 May 2022 12:33:24 +0000 (06:33 -0600)
committerGitHub <noreply@github.com>
Tue, 3 May 2022 12:33:24 +0000 (06:33 -0600)
Modules/_sqlite/connection.c
Modules/_sqlite/connection.h
Modules/_sqlite/cursor.c

index fe244c8b22771a44ec0c3f95cdccb35e49438c26..75d29704695c63d918584cfaaad13e999f3c73f0 100644 (file)
@@ -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
 
index 2b946ff3c7369b283089da81cacdc80a930d0b7b..629fe3d3a95a11559ba05eb704dfe0b5b61d2263 100644 (file)
@@ -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);
 
index 861704f95cc83c96e7c6818a0c449106293c3345..84f481792ddd3b88bf53c824820a407d9f485d77 100644 (file)
@@ -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;
     }