Kaydet (Commit) 93c5a5df authored tarafından Oren Milman's avatar Oren Milman Kaydeden (comit) Victor Stinner

bpo-31740: Prevent refleaks when sqlite3.Connection.__init__() is called more than once (GH-3944)

üst a997c7b4
...@@ -97,15 +97,15 @@ int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject ...@@ -97,15 +97,15 @@ int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject
self->begin_statement = NULL; self->begin_statement = NULL;
self->statement_cache = NULL; Py_CLEAR(self->statement_cache);
self->statements = NULL; Py_CLEAR(self->statements);
self->cursors = NULL; Py_CLEAR(self->cursors);
Py_INCREF(Py_None); Py_INCREF(Py_None);
self->row_factory = Py_None; Py_XSETREF(self->row_factory, Py_None);
Py_INCREF(&PyUnicode_Type); Py_INCREF(&PyUnicode_Type);
self->text_factory = (PyObject*)&PyUnicode_Type; Py_XSETREF(self->text_factory, (PyObject*)&PyUnicode_Type);
#ifdef SQLITE_OPEN_URI #ifdef SQLITE_OPEN_URI
Py_BEGIN_ALLOW_THREADS Py_BEGIN_ALLOW_THREADS
...@@ -137,7 +137,7 @@ int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject ...@@ -137,7 +137,7 @@ int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject
} else { } else {
Py_INCREF(isolation_level); Py_INCREF(isolation_level);
} }
self->isolation_level = NULL; Py_CLEAR(self->isolation_level);
if (pysqlite_connection_set_isolation_level(self, isolation_level) < 0) { if (pysqlite_connection_set_isolation_level(self, isolation_level) < 0) {
Py_DECREF(isolation_level); Py_DECREF(isolation_level);
return -1; return -1;
...@@ -177,12 +177,12 @@ int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject ...@@ -177,12 +177,12 @@ int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject
} }
self->check_same_thread = check_same_thread; self->check_same_thread = check_same_thread;
self->function_pinboard = PyDict_New(); Py_XSETREF(self->function_pinboard, PyDict_New());
if (!self->function_pinboard) { if (!self->function_pinboard) {
return -1; return -1;
} }
self->collations = PyDict_New(); Py_XSETREF(self->collations, PyDict_New());
if (!self->collations) { if (!self->collations) {
return -1; return -1;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment