Mercurial > cpython-lru_cache-weakref
diff Modules/_sqlite/module.c @ 47580:94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
| author | Martin v. Löwis <martin@v.loewis.de> |
|---|---|
| date | Wed, 11 Jun 2008 05:26:20 +0000 |
| parents | 96b34263e448 |
| children | 81fd8a8baa9a |
line wrap: on
line diff
--- a/Modules/_sqlite/module.c Wed Jun 11 03:41:00 2008 +0000 +++ b/Modules/_sqlite/module.c Wed Jun 11 05:26:20 2008 +0000 @@ -257,13 +257,26 @@ {(char*)NULL, 0} }; -PyMODINIT_FUNC init_sqlite3(void) + +static struct PyModuleDef _sqlite3module = { + PyModuleDef_HEAD_INIT, + "_sqlite3", + NULL, + -1, + module_methods, + NULL, + NULL, + NULL, + NULL +}; + +PyMODINIT_FUNC PyInit__sqlite3(void) { PyObject *module, *dict; PyObject *tmp_obj; int i; - module = Py_InitModule("_sqlite3", module_methods); + module = PyModule_Create(&_sqlite3module); if (!module || (pysqlite_row_setup_types() < 0) || @@ -273,7 +286,8 @@ (pysqlite_statement_setup_types() < 0) || (pysqlite_prepare_protocol_setup_types() < 0) ) { - return; + Py_DECREF(module); + return NULL; } Py_INCREF(&pysqlite_ConnectionType); @@ -408,5 +422,8 @@ if (PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, MODULE_NAME ": init failed"); + Py_DECREF(module); + module = NULL; } + return module; }
