summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authordonal.k.fellows@manchester.ac.uk <dkf>2003-02-18 14:03:46 (GMT)
committerdonal.k.fellows@manchester.ac.uk <dkf>2003-02-18 14:03:46 (GMT)
commitc26c700e25a33f69a216f28441a038e4e273afb5 (patch)
tree4e75c6657880609b0fc3106856cdffdc69c62915 /generic
parentae1fa0bad84069bd52ba8e02b4895d7087622035 (diff)
downloadtk-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.c22
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;
-
}
/*