summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1997-09-03 18:19:40 (GMT)
committerGuido van Rossum <guido@python.org>1997-09-03 18:19:40 (GMT)
commit9efe8ef7a143d92cdf724c76f6bcf3f5c1ed7a66 (patch)
tree1a52a8f94189f7c613b8c41fffd7eff7f6a1a594
parentc3beda2f277a003deca2fd0f9b2ae8538d317087 (diff)
downloadcpython-9efe8ef7a143d92cdf724c76f6bcf3f5c1ed7a66.zip
cpython-9efe8ef7a143d92cdf724c76f6bcf3f5c1ed7a66.tar.gz
cpython-9efe8ef7a143d92cdf724c76f6bcf3f5c1ed7a66.tar.bz2
#Plug small memory leaks in constructors.
-rw-r--r--Modules/cPickle.c7
-rw-r--r--Modules/cStringIO.c9
-rw-r--r--Modules/operator.c5
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())