]> granicus.if.org Git - python/commitdiff
SF bug #808756: refleaks in _hotshot.c.
authorArmin Rigo <arigo@tunes.org>
Tue, 3 Aug 2004 08:33:55 +0000 (08:33 +0000)
committerArmin Rigo <arigo@tunes.org>
Tue, 3 Aug 2004 08:33:55 +0000 (08:33 +0000)
Modules/_hotshot.c

index 0683be6c32dfceee826ab2aa31166992f68438b1..b75b1a32fbd88e69b56c8c5d83ff170d4d781b44 100644 (file)
@@ -347,9 +347,11 @@ unpack_add_info(LogReaderObject *self)
                     goto finally;
                 }
                 if (PyDict_SetItem(self->info, key, list)) {
+                    Py_DECREF(list);
                     err = ERR_EXCEPTION;
                     goto finally;
                 }
+                Py_DECREF(list);
             }
             if (PyList_Append(list, value))
                 err = ERR_EXCEPTION;
@@ -519,6 +521,7 @@ logreader_dealloc(LogReaderObject *self)
         fclose(self->logfp);
         self->logfp = NULL;
     }
+    Py_XDECREF(self->info);
     PyObject_Del(self);
 }
 
@@ -795,11 +798,16 @@ get_fileno(ProfilerObject *self, PyCodeObject *fcode)
         PyObject *name = PyDict_GetItem(dict, obj);
         if (name == NULL) {
             if (pack_define_func(self, fileno, fcode->co_firstlineno,
-                                 PyString_AS_STRING(fcode->co_name)) < 0)
+                                 PyString_AS_STRING(fcode->co_name)) < 0) {
+                Py_DECREF(obj);
                 return -1;
-            if (PyDict_SetItem(dict, obj, fcode->co_name))
+            }
+            if (PyDict_SetItem(dict, obj, fcode->co_name)) {
+                Py_DECREF(obj);
                 return -1;
+            }
         }
+        Py_DECREF(obj);
     }
     return fileno;
 }