summaryrefslogtreecommitdiffstats
path: root/Modules/mmapmodule.c
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2006-08-13 18:11:27 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2006-08-13 18:11:27 (GMT)
commite9ac0bb16945d021d3340a6b96edda82be784228 (patch)
tree1558d0a57319f3e5eb04c127d2799ca5665e94f8 /Modules/mmapmodule.c
parent56423e5762fc7eef66da0f04baa59c185c79ca81 (diff)
downloadcpython-e9ac0bb16945d021d3340a6b96edda82be784228.zip
cpython-e9ac0bb16945d021d3340a6b96edda82be784228.tar.gz
cpython-e9ac0bb16945d021d3340a6b96edda82be784228.tar.bz2
Check return result of PyModule_GetDict().
Fix a bunch of refleaks in the init of the module. This would only be found when running python -v.
Diffstat (limited to 'Modules/mmapmodule.c')
-rw-r--r--Modules/mmapmodule.c46
1 files changed, 24 insertions, 22 deletions
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index 53df275..e25ec97 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -1126,6 +1126,15 @@ static struct PyMethodDef mmap_functions[] = {
{NULL, NULL} /* Sentinel */
};
+static void
+setint(PyObject *d, const char *name, long value)
+{
+ PyObject *o = PyInt_FromLong(value);
+ if (o)
+ if (PyDict_SetItemString(d, name, o) == 0)
+ Py_DECREF(o);
+}
+
PyMODINIT_FUNC
initmmap(void)
{
@@ -1138,47 +1147,40 @@ PyMODINIT_FUNC
if (module == NULL)
return;
dict = PyModule_GetDict(module);
+ if (!dict)
+ return;
mmap_module_error = PyExc_EnvironmentError;
- Py_INCREF(mmap_module_error);
PyDict_SetItemString(dict, "error", mmap_module_error);
#ifdef PROT_EXEC
- PyDict_SetItemString(dict, "PROT_EXEC", PyInt_FromLong(PROT_EXEC) );
+ setint(dict, "PROT_EXEC", PROT_EXEC);
#endif
#ifdef PROT_READ
- PyDict_SetItemString(dict, "PROT_READ", PyInt_FromLong(PROT_READ) );
+ setint(dict, "PROT_READ", PROT_READ);
#endif
#ifdef PROT_WRITE
- PyDict_SetItemString(dict, "PROT_WRITE", PyInt_FromLong(PROT_WRITE) );
+ setint(dict, "PROT_WRITE", PROT_WRITE);
#endif
#ifdef MAP_SHARED
- PyDict_SetItemString(dict, "MAP_SHARED", PyInt_FromLong(MAP_SHARED) );
+ setint(dict, "MAP_SHARED", MAP_SHARED);
#endif
#ifdef MAP_PRIVATE
- PyDict_SetItemString(dict, "MAP_PRIVATE",
- PyInt_FromLong(MAP_PRIVATE) );
+ setint(dict, "MAP_PRIVATE", MAP_PRIVATE);
#endif
#ifdef MAP_DENYWRITE
- PyDict_SetItemString(dict, "MAP_DENYWRITE",
- PyInt_FromLong(MAP_DENYWRITE) );
+ setint(dict, "MAP_DENYWRITE", MAP_DENYWRITE);
#endif
#ifdef MAP_EXECUTABLE
- PyDict_SetItemString(dict, "MAP_EXECUTABLE",
- PyInt_FromLong(MAP_EXECUTABLE) );
+ setint(dict, "MAP_EXECUTABLE", MAP_EXECUTABLE);
#endif
#ifdef MAP_ANONYMOUS
- PyDict_SetItemString(dict, "MAP_ANON", PyInt_FromLong(MAP_ANONYMOUS) );
- PyDict_SetItemString(dict, "MAP_ANONYMOUS",
- PyInt_FromLong(MAP_ANONYMOUS) );
+ setint(dict, "MAP_ANON", MAP_ANONYMOUS);
+ setint(dict, "MAP_ANONYMOUS", MAP_ANONYMOUS);
#endif
- PyDict_SetItemString(dict, "PAGESIZE",
- PyInt_FromLong((long)my_getpagesize()));
+ setint(dict, "PAGESIZE", (long)my_getpagesize());
- PyDict_SetItemString(dict, "ACCESS_READ",
- PyInt_FromLong(ACCESS_READ));
- PyDict_SetItemString(dict, "ACCESS_WRITE",
- PyInt_FromLong(ACCESS_WRITE));
- PyDict_SetItemString(dict, "ACCESS_COPY",
- PyInt_FromLong(ACCESS_COPY));
+ setint(dict, "ACCESS_READ", ACCESS_READ);
+ setint(dict, "ACCESS_WRITE", ACCESS_WRITE);
+ setint(dict, "ACCESS_COPY", ACCESS_COPY);
}