bpo-42021: Fix possible ref leaks during _sqlite3 module init (GH-22673)
diff --git a/Modules/_sqlite/microprotocols.c b/Modules/_sqlite/microprotocols.c
index 64095ad..ddc30e8 100644
--- a/Modules/_sqlite/microprotocols.c
+++ b/Modules/_sqlite/microprotocols.c
@@ -37,14 +37,19 @@
/* pysqlite_microprotocols_init - initialize the adapters dictionary */
int
-pysqlite_microprotocols_init(PyObject *dict)
+pysqlite_microprotocols_init(PyObject *module)
{
/* create adapters dictionary and put it in module namespace */
if ((psyco_adapters = PyDict_New()) == NULL) {
return -1;
}
- return PyDict_SetItemString(dict, "adapters", psyco_adapters);
+ if (PyModule_AddObject(module, "adapters", psyco_adapters) < 0) {
+ Py_DECREF(psyco_adapters);
+ return -1;
+ }
+
+ return 0;
}