mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
bpo-33901: Add _gdbm._GDBM_VERSION (GH-7794)
* Fix also PyInit__gdbm() to catch errors. * test.pythoninfo: add gdbm.version * test_dbm_gnu now logs GDBM_VERSION when run in verbose mode. * pythoninfo: rename function to collect_gdbm()
This commit is contained in:
parent
06fe77a84b
commit
00f9edb98d
3 changed files with 53 additions and 9 deletions
|
@ -654,20 +654,43 @@ static struct PyModuleDef _gdbmmodule = {
|
|||
|
||||
PyMODINIT_FUNC
|
||||
PyInit__gdbm(void) {
|
||||
PyObject *m, *d, *s;
|
||||
PyObject *m;
|
||||
|
||||
if (PyType_Ready(&Dbmtype) < 0)
|
||||
return NULL;
|
||||
m = PyModule_Create(&_gdbmmodule);
|
||||
if (m == NULL)
|
||||
if (m == NULL) {
|
||||
return NULL;
|
||||
d = PyModule_GetDict(m);
|
||||
DbmError = PyErr_NewException("_gdbm.error", PyExc_OSError, NULL);
|
||||
if (DbmError != NULL) {
|
||||
PyDict_SetItemString(d, "error", DbmError);
|
||||
s = PyUnicode_FromString(dbmmodule_open_flags);
|
||||
PyDict_SetItemString(d, "open_flags", s);
|
||||
Py_DECREF(s);
|
||||
}
|
||||
|
||||
DbmError = PyErr_NewException("_gdbm.error", PyExc_OSError, NULL);
|
||||
if (DbmError == NULL) {
|
||||
goto error;
|
||||
}
|
||||
Py_INCREF(DbmError);
|
||||
if (PyModule_AddObject(m, "error", DbmError) < 0) {
|
||||
Py_DECREF(DbmError);
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (PyModule_AddStringConstant(m, "open_flags",
|
||||
dbmmodule_open_flags) < 0) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
PyObject *obj = Py_BuildValue("iii", GDBM_VERSION_MAJOR,
|
||||
GDBM_VERSION_MINOR, GDBM_VERSION_PATCH);
|
||||
if (obj == NULL) {
|
||||
goto error;
|
||||
}
|
||||
if (PyModule_AddObject(m, "_GDBM_VERSION", obj) < 0) {
|
||||
Py_DECREF(obj);
|
||||
goto error;
|
||||
}
|
||||
|
||||
return m;
|
||||
|
||||
error:
|
||||
Py_DECREF(m);
|
||||
return NULL;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue