summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Python/modsupport.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/Python/modsupport.c b/Python/modsupport.c
index f29b27c..f4f8298 100644
--- a/Python/modsupport.c
+++ b/Python/modsupport.c
@@ -488,15 +488,22 @@ int
PyModule_AddObject(PyObject *m, char *name, PyObject *o)
{
PyObject *dict;
- if (!PyModule_Check(m) || o == NULL)
- return -1;
+ if (!PyModule_Check(m) || o == NULL) {
+ PyErr_SetString(PyExc_TypeError,
+ "PyModule_AddObject() needs module as first arg");
+ return -1;
+ }
dict = PyModule_GetDict(m);
- if (dict == NULL)
+ if (dict == NULL) {
+ /* Internal error -- modules must have a dict! */
+ PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__",
+ PyModule_GetName(m));
+ return -1;
+ }
+ if (PyDict_SetItemString(dict, name, o))
return -1;
- if (PyDict_SetItemString(dict, name, o))
- return -1;
- Py_DECREF(o);
- return 0;
+ Py_DECREF(o);
+ return 0;
}
int