From 9efe8ef7a143d92cdf724c76f6bcf3f5c1ed7a66 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Wed, 3 Sep 1997 18:19:40 +0000 Subject: #Plug small memory leaks in constructors. --- Modules/cPickle.c | 7 +++++-- Modules/cStringIO.c | 9 +++++++-- Modules/operator.c | 5 +++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Modules/cPickle.c b/Modules/cPickle.c index 980fb28..b5fddd0 100644 --- a/Modules/cPickle.c +++ b/Modules/cPickle.c @@ -3876,7 +3876,7 @@ init_stuff(PyObject *module, PyObject *module_dict) { /* Initialization function for the module (*must* be called initcPickle) */ void initcPickle() { - PyObject *m, *d; + PyObject *m, *d, *v; char *rev="$Revision$"; PyObject *format_version; PyObject *compatible_formats; @@ -3893,7 +3893,8 @@ initcPickle() { /* Add some symbolic constants to the module */ d = PyModule_GetDict(m); PyDict_SetItemString(d,"__version__", - PyString_FromStringAndSize(rev+11,strlen(rev+11)-2)); + v = PyString_FromStringAndSize(rev+11,strlen(rev+11)-2)); + Py_XDECREF(v); #ifdef FORMAT_1_3 format_version = PyString_FromString("1.3"); @@ -3905,6 +3906,8 @@ initcPickle() { PyDict_SetItemString(d, "format_version", format_version); PyDict_SetItemString(d, "compatible_formats", compatible_formats); + Py_XDECREF(format_version); + Py_XDECREF(compatible_formats); init_stuff(m, d); CHECK_FOR_ERRORS("can't initialize module cPickle"); diff --git a/Modules/cStringIO.c b/Modules/cStringIO.c index b08c899..ff47b70 100644 --- a/Modules/cStringIO.c +++ b/Modules/cStringIO.c @@ -600,7 +600,7 @@ static struct PycStringIO_CAPI CAPI = { void initcStringIO() { - PyObject *m, *d; + PyObject *m, *d, *v; /* Create the module and add the functions */ @@ -614,7 +614,9 @@ initcStringIO() { /* Export C API */ Itype.ob_type=&PyType_Type; Otype.ob_type=&PyType_Type; - PyDict_SetItemString(d,"cStringIO_CAPI", PyCObject_FromVoidPtr(&CAPI,NULL)); + PyDict_SetItemString(d,"cStringIO_CAPI", + v = PyCObject_FromVoidPtr(&CAPI,NULL)); + Py_XDECREF(v); /* Export Types */ PyDict_SetItemString(d,"InputType", (PyObject*)&Itype); @@ -631,6 +633,9 @@ initcStringIO() { /****************************************************************************** $Log$ + Revision 2.8 1997/09/03 18:19:38 guido + #Plug small memory leaks in constructors. + Revision 2.7 1997/09/03 00:09:26 guido Fix the bug Jeremy was experiencing: both the close() and the dealloc() functions contained code to free/DECREF the buffer diff --git a/Modules/operator.c b/Modules/operator.c index 43324a2..14a7aaf 100644 --- a/Modules/operator.c +++ b/Modules/operator.c @@ -256,7 +256,7 @@ spam2(delslice,__delslice__, void initoperator() { - PyObject *m, *d; + PyObject *m, *d, *v; /* Create the module and add the functions */ m = Py_InitModule4("operator", operator_methods, @@ -266,7 +266,8 @@ initoperator() /* Add some symbolic constants to the module */ d = PyModule_GetDict(m); PyDict_SetItemString(d, "__version__", - PyString_FromString("$Rev$")); + v = PyString_FromString("$Rev$")); + Py_XDECREF(v); /* Check for errors */ if (PyErr_Occurred()) -- cgit v0.12