Skip to content

Commit

Permalink
bpo-1635741: _sqlite3 uses PyModule_AddObjectRef() (pythonGH-23148)
Browse files Browse the repository at this point in the history
  • Loading branch information
Erlend Egeberg Aasland authored and adorilson committed Mar 11, 2021
1 parent 1ba72a3 commit 3213e91
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 17 deletions.
8 changes: 3 additions & 5 deletions Modules/_sqlite/microprotocols.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,10 @@ pysqlite_microprotocols_init(PyObject *module)
return -1;
}

if (PyModule_AddObject(module, "adapters", psyco_adapters) < 0) {
Py_DECREF(psyco_adapters);
return -1;
}
int res = PyModule_AddObjectRef(module, "adapters", psyco_adapters);
Py_DECREF(psyco_adapters);

return 0;
return res;
}


Expand Down
25 changes: 13 additions & 12 deletions Modules/_sqlite/module.c
Original file line number Diff line number Diff line change
Expand Up @@ -263,17 +263,17 @@ pysqlite_adapt_impl(PyObject *module, PyObject *obj, PyObject *proto,
return pysqlite_microprotocols_adapt(obj, proto, alt);
}

static void converters_init(PyObject* module)
static int converters_init(PyObject* module)
{
_pysqlite_converters = PyDict_New();
if (!_pysqlite_converters) {
return;
return -1;
}

if (PyModule_AddObject(module, "converters", _pysqlite_converters) < 0) {
Py_DECREF(_pysqlite_converters);
}
return;
int res = PyModule_AddObjectRef(module, "converters", _pysqlite_converters);
Py_DECREF(_pysqlite_converters);

return res;
}

static PyMethodDef module_methods[] = {
Expand Down Expand Up @@ -361,8 +361,9 @@ do { \
if (!exc) { \
goto error; \
} \
if (PyModule_AddObject(module, name, exc) < 0) { \
Py_DECREF(exc); \
int res = PyModule_AddObjectRef(module, name, exc); \
Py_DECREF(exc); \
if (res < 0) { \
goto error; \
} \
} while (0)
Expand Down Expand Up @@ -416,9 +417,7 @@ PyMODINIT_FUNC PyInit__sqlite3(void)
non-ASCII data and bytestrings to be returned for ASCII data.
Now OptimizedUnicode is an alias for str, so it has no
effect. */
Py_INCREF((PyObject*)&PyUnicode_Type);
if (PyModule_AddObject(module, "OptimizedUnicode", (PyObject*)&PyUnicode_Type) < 0) {
Py_DECREF((PyObject*)&PyUnicode_Type);
if (PyModule_AddObjectRef(module, "OptimizedUnicode", (PyObject*)&PyUnicode_Type) < 0) {
goto error;
}

Expand All @@ -441,7 +440,9 @@ PyMODINIT_FUNC PyInit__sqlite3(void)
}

/* initialize the default converters */
converters_init(module);
if (converters_init(module) < 0) {
goto error;
}

error:
if (PyErr_Occurred())
Expand Down

0 comments on commit 3213e91

Please sign in to comment.