From fa70e180d1e07e0428344c933b17056e2e31c3dd Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 18 Feb 2003 14:03:45 +0000 Subject: * generic/tkImgGIF.c (FileReadGIF): Ensure that the trashBuffer is always deallocated on function exit to stop a potential memory leak. FossilOrigin-Name: e8d1555cacdd77f35ca4e46ca87ef5771f1401af --- ChangeLog | 5 +++++ generic/tkImgGIF.c | 22 +++++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index cdaa24e..0c7fe27 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-02-18 Donal K. Fellows + + * generic/tkImgGIF.c (FileReadGIF): Ensure that the trashBuffer is + always deallocated on function exit to stop a potential memory leak. + 2003-02-17 Mo DeJong * generic/tkEvent.c (Tk_HandleEvent): Fixup button diff --git a/generic/tkImgGIF.c b/generic/tkImgGIF.c index e952afb..b34365e 100644 --- a/generic/tkImgGIF.c +++ b/generic/tkImgGIF.c @@ -29,7 +29,7 @@ * | provided "as is" without express or implied warranty. | * +-------------------------------------------------------------------+ * - * RCS: @(#) $Id: tkImgGIF.c,v 1.22 2002/08/08 09:35:08 hobbs Exp $ + * RCS: @(#) $Id: tkImgGIF.c,v 1.23 2003/02/18 14:03:46 dkf Exp $ */ /* @@ -424,13 +424,6 @@ FileReadGIF(interp, chan, fileName, format, imageHandle, destX, destY, continue; } - /* - * If a trash buffer has been allocated, free it now. - */ - if (trashBuffer != NULL) { - ckfree((char *)trashBuffer); - trashBuffer = NULL; - } if (BitSet(buf[8], LOCALCOLORMAP)) { if (!ReadColorMap(chan, bitPixel, colorMap)) { Tcl_AppendResult(interp, "error reading color map", @@ -485,6 +478,12 @@ FileReadGIF(interp, chan, fileName, format, imageHandle, destX, destY, TK_PHOTO_COMPOSITE_SET); noerror: + /* + * If a trash buffer has been allocated, free it now. + */ + if (trashBuffer != NULL) { + ckfree((char *)trashBuffer); + } if (block.pixelPtr) { ckfree((char *) block.pixelPtr); } @@ -492,11 +491,16 @@ FileReadGIF(interp, chan, fileName, format, imageHandle, destX, destY, return TCL_OK; error: + /* + * If a trash buffer has been allocated, free it now. + */ + if (trashBuffer != NULL) { + ckfree((char *)trashBuffer); + } if (block.pixelPtr) { ckfree((char *) block.pixelPtr); } return TCL_ERROR; - } /* -- cgit v0.12