]> git.saurik.com Git - wxWidgets.git/blobdiff - src/tiff/libtiff/tif_close.c
Reflect changes in stc.cpp in stc.cpp.in from which it's generated.
[wxWidgets.git] / src / tiff / libtiff / tif_close.c
index 99afca3d477804dc8f804c84588cfcfe16279983..2676bb3b41ee227ad975364d6815f816c797c1c7 100644 (file)
@@ -1,4 +1,3 @@
-/* $Id$ */
 
 /*
  * Copyright (c) 1988-1997 Sam Leffler
@@ -28,6 +27,7 @@
  * TIFF Library.
  */
 #include "tiffiop.h"
+#include <string.h>
 
 /************************************************************************/
 /*                            TIFFCleanup()                             */
 void
 TIFFCleanup(TIFF* tif)
 {
+       /*
+         * Flush buffered data and directory (if dirty).
+         */
        if (tif->tif_mode != O_RDONLY)
-           /*
-            * Flush buffered data and directory (if dirty).
-            */
-           TIFFFlush(tif);
+               TIFFFlush(tif);
        (*tif->tif_cleanup)(tif);
        TIFFFreeDirectory(tif);
 
        if (tif->tif_dirlist)
-           _TIFFfree(tif->tif_dirlist);
-           
-       /* Clean up client info links */
+               _TIFFfree(tif->tif_dirlist);
+
+       /*
+         * Clean up client info links.
+         */
        while( tif->tif_clientinfo )
        {
-           TIFFClientInfoLink *link = tif->tif_clientinfo;
+               TIFFClientInfoLink *link = tif->tif_clientinfo;
 
-           tif->tif_clientinfo = link->next;
-           _TIFFfree( link->name );
-           _TIFFfree( link );
+               tif->tif_clientinfo = link->next;
+               _TIFFfree( link->name );
+               _TIFFfree( link );
        }
 
        if (tif->tif_rawdata && (tif->tif_flags&TIFF_MYBUFFER))
-           _TIFFfree(tif->tif_rawdata);
+               _TIFFfree(tif->tif_rawdata);
        if (isMapped(tif))
-           TIFFUnmapFileContents(tif, tif->tif_base, tif->tif_size);
-
-       /* Clean up custom fields */
-       if (tif->tif_nfields > 0) 
-       {
-           size_t  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);
+               TIFFUnmapFileContents(tif, tif->tif_base, (toff_t)tif->tif_size);
+
+       /*
+         * Clean up custom fields.
+         */
+       if (tif->tif_fields && tif->tif_nfields > 0) {
+               uint32 i;
+
+               for (i = 0; i < tif->tif_nfields; i++) {
+                       TIFFField *fld = tif->tif_fields[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->tif_fields);
        }
 
+        if (tif->tif_nfieldscompat > 0) {
+                uint32 i;
+
+                for (i = 0; i < tif->tif_nfieldscompat; i++) {
+                        if (tif->tif_fieldscompat[i].allocated_size)
+                                _TIFFfree(tif->tif_fieldscompat[i].fields);
+                }
+                _TIFFfree(tif->tif_fieldscompat);
+        }
+
        _TIFFfree(tif);
 }
 
@@ -117,3 +128,12 @@ TIFFClose(TIFF* tif)
        (void) (*closeproc)(fd);
 }
 
+/* vim: set ts=8 sts=8 sw=8 noet: */
+
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */