]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
back-ported SF bug #808756: refleaks
authorArmin Rigo <arigo@tunes.org>
Tue, 3 Aug 2004 09:02:32 +0000 (09:02 +0000)
committerArmin Rigo <arigo@tunes.org>
Tue, 3 Aug 2004 09:02:32 +0000 (09:02 +0000)
Modules/_hotshot.c

index da689700953b46f01a8ea0dc1605c7ed4becd8f3..1f347250cd4c0ccd7e8d0dce23c9d8f1b8d029b6 100644 (file)
@@ -351,9 +351,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;
@@ -523,6 +525,7 @@ logreader_dealloc(LogReaderObject *self)
         fclose(self->logfp);
         self->logfp = NULL;
     }
+    Py_XDECREF(self->info);
     PyObject_Del(self);
 }
 
@@ -799,11 +802,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;
 }