summaryrefslogtreecommitdiff
path: root/libtiff/tif_close.c
diff options
context:
space:
mode:
authorFrank Warmerdam <warmerdam@pobox.com>2002-08-15 12:59:25 +0000
committerFrank Warmerdam <warmerdam@pobox.com>2002-08-15 12:59:25 +0000
commite73fae909d20ab564459eb30b315dbf5b7f3375d (patch)
treee7e71b2a88587791691aaaa66902aa098f0999d2 /libtiff/tif_close.c
parent5cf069740135d9eec02964e812eaf25356def691 (diff)
downloadlibtiff-git-e73fae909d20ab564459eb30b315dbf5b7f3375d.tar.gz
cleanup anonymous field memory as per bug 169
Diffstat (limited to 'libtiff/tif_close.c')
-rw-r--r--libtiff/tif_close.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/libtiff/tif_close.c b/libtiff/tif_close.c
index 4d64f2fd..8a6065af 100644
--- a/libtiff/tif_close.c
+++ b/libtiff/tif_close.c
@@ -1,4 +1,4 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_close.c,v 1.3 2002-04-03 20:13:31 warmerda Exp $ */
+/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_close.c,v 1.4 2002-08-15 12:59:25 warmerda Exp $ */
/*
* Copyright (c) 1988-1997 Sam Leffler
@@ -55,7 +55,23 @@ TIFFClose(TIFF* tif)
if (isMapped(tif))
TIFFUnmapFileContents(tif, tif->tif_base, tif->tif_size);
(void) TIFFCloseFile(tif);
- if (tif->tif_fieldinfo)
+ if (tif->tif_nfields > 0)
+ {
+ int i;
+
+ for (i = 0; i < tif->tif_nfields; i++)
+ {
+ TIFFFieldInfo *fld = tif->tif_fieldinfo[i];
+ if (fld->field_bit == FIELD_CUSTOM &&
+ strncmp("Tag ", fld->field_name, 4) == 0)
+ {
+ _TIFFfree(fld->field_name);
+ _TIFFfree(fld);
+ }
+ }
+
_TIFFfree(tif->tif_fieldinfo);
+ }
+
_TIFFfree(tif);
}