From: Armin Rigo Date: Tue, 3 Aug 2004 09:02:32 +0000 (+0000) Subject: back-ported SF bug #808756: refleaks X-Git-Tag: v2.3.5c1~145 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=09f9565f36fbdaafcc7024519df666caf11900ea;p=thirdparty%2FPython%2Fcpython.git back-ported SF bug #808756: refleaks --- diff --git a/Modules/_hotshot.c b/Modules/_hotshot.c index da689700953b..1f347250cd4c 100644 --- a/Modules/_hotshot.c +++ b/Modules/_hotshot.c @@ -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; }