diff options
author | donal.k.fellows@manchester.ac.uk <dkf> | 2003-02-18 14:03:46 (GMT) |
---|---|---|
committer | donal.k.fellows@manchester.ac.uk <dkf> | 2003-02-18 14:03:46 (GMT) |
commit | c26c700e25a33f69a216f28441a038e4e273afb5 (patch) | |
tree | 4e75c6657880609b0fc3106856cdffdc69c62915 /generic | |
parent | ae1fa0bad84069bd52ba8e02b4895d7087622035 (diff) | |
download | tk-c26c700e25a33f69a216f28441a038e4e273afb5.zip tk-c26c700e25a33f69a216f28441a038e4e273afb5.tar.gz tk-c26c700e25a33f69a216f28441a038e4e273afb5.tar.bz2 |
* generic/tkImgGIF.c (FileReadGIF): Ensure that the trashBuffer is
always deallocated on function exit to stop a potential memory leak.
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tkImgGIF.c | 22 |
1 files changed, 13 insertions, 9 deletions
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; - } /* |