bpo-1635741: _sqlite3 uses PyModule_AddObjectRef() (GH-23148)

This commit is contained in:
Erlend Egeberg Aasland 2020-11-04 20:31:51 +01:00 committed by GitHub
parent 7184218e18
commit 789359f47c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 17 deletions

View File

@ -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;
}

View File

@ -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[] = {
@ -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)
@ -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;
}
@ -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())