From: Armin Rigo Date: Tue, 3 Aug 2004 08:33:55 +0000 (+0000) Subject: SF bug #808756: refleaks in _hotshot.c. X-Git-Tag: v2.4a2~52 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a41276956d9c269f42dd9d57561475160fe22031;p=thirdparty%2FPython%2Fcpython.git SF bug #808756: refleaks in _hotshot.c. --- diff --git a/Modules/_hotshot.c b/Modules/_hotshot.c index 0683be6c32df..b75b1a32fbd8 100644 --- a/Modules/_hotshot.c +++ b/Modules/_hotshot.c @@ -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; }