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; return -1;
} }
if (PyModule_AddObject(module, "adapters", psyco_adapters) < 0) { int res = PyModule_AddObjectRef(module, "adapters", psyco_adapters);
Py_DECREF(psyco_adapters); Py_DECREF(psyco_adapters);
return -1;
}
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); return pysqlite_microprotocols_adapt(obj, proto, alt);
} }
static void converters_init(PyObject* module) static int converters_init(PyObject* module)
{ {
_pysqlite_converters = PyDict_New(); _pysqlite_converters = PyDict_New();
if (!_pysqlite_converters) { if (!_pysqlite_converters) {
return; return -1;
} }
if (PyModule_AddObject(module, "converters", _pysqlite_converters) < 0) { int res = PyModule_AddObjectRef(module, "converters", _pysqlite_converters);
Py_DECREF(_pysqlite_converters); Py_DECREF(_pysqlite_converters);
}
return; return res;
} }
static PyMethodDef module_methods[] = { static PyMethodDef module_methods[] = {
@ -361,8 +361,9 @@ do { \
if (!exc) { \ if (!exc) { \
goto error; \ goto error; \
} \ } \
if (PyModule_AddObject(module, name, exc) < 0) { \ int res = PyModule_AddObjectRef(module, name, exc); \
Py_DECREF(exc); \ Py_DECREF(exc); \
if (res < 0) { \
goto error; \ goto error; \
} \ } \
} while (0) } while (0)
@ -416,9 +417,7 @@ PyMODINIT_FUNC PyInit__sqlite3(void)
non-ASCII data and bytestrings to be returned for ASCII data. non-ASCII data and bytestrings to be returned for ASCII data.
Now OptimizedUnicode is an alias for str, so it has no Now OptimizedUnicode is an alias for str, so it has no
effect. */ effect. */
Py_INCREF((PyObject*)&PyUnicode_Type); if (PyModule_AddObjectRef(module, "OptimizedUnicode", (PyObject*)&PyUnicode_Type) < 0) {
if (PyModule_AddObject(module, "OptimizedUnicode", (PyObject*)&PyUnicode_Type) < 0) {
Py_DECREF((PyObject*)&PyUnicode_Type);
goto error; goto error;
} }
@ -441,7 +440,9 @@ PyMODINIT_FUNC PyInit__sqlite3(void)
} }
/* initialize the default converters */ /* initialize the default converters */
converters_init(module); if (converters_init(module) < 0) {
goto error;
}
error: error:
if (PyErr_Occurred()) if (PyErr_Occurred())