Issue #9675: better error handling in bsddb
diff --git a/Modules/_bsddb.c b/Modules/_bsddb.c
index 5266a2c..1451776 100644
--- a/Modules/_bsddb.c
+++ b/Modules/_bsddb.c
@@ -9976,8 +9976,21 @@
}
#endif
- PyDict_SetItemString(d, "api", py_api);
- Py_DECREF(py_api);
+ /* Check error control */
+ /*
+ ** PyErr_NoMemory();
+ ** py_api = NULL;
+ */
+
+ if (py_api) {
+ PyDict_SetItemString(d, "api", py_api);
+ Py_DECREF(py_api);
+ } else { /* Something bad happened */
+ PyErr_WriteUnraisable(m);
+ PyErr_Warn(PyExc_RuntimeWarning,
+ "_bsddb/_pybsddb C API will be not available");
+ PyErr_Clear();
+ }
/* Check for errors */
if (PyErr_Occurred()) {