rev 383 - trunk

[email protected] Mon, 3 Jan 2005 20:41:56 -0800 (PST)
Newsgroups gmane.comp.printing.ghostscript.jbig2dec.cvs
Message-ID <[email protected]>
Author: giles
Date: 2005-01-03 20:41:56 -0800 (Mon, 03 Jan 2005)
New Revision: 383

Modified:
   trunk/jbig2_metadata.c
Log:
Properly free tag and value strings from inside the metadata struct. We=20
now assume we own those pointers, which is fine if jbig2_metadata_add()=20
is used to construct them.


Modified: trunk/jbig2_metadata.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/jbig2_metadata.c	2005-01-04 04:40:18 UTC (rev 382)
+++ trunk/jbig2_metadata.c	2005-01-04 04:41:56 UTC (rev 383)
@@ -49,8 +49,19 @@
=20
 void jbig2_metadata_free(Jbig2Ctx *ctx, Jbig2Metadata *md)
 {
-    if (md->keys) jbig2_free(ctx->allocator, md->keys);
-    if (md->values) jbig2_free(ctx->allocator, md->values);
+    int i;
+
+    if (md->keys) {
+      /* assume we own the pointers */
+      for (i =3D 0; i < md->entries; i++)
+        jbig2_free(ctx->allocator, md->keys[i]);
+      jbig2_free(ctx->allocator, md->keys);
+    }
+    if (md->values) {
+      for (i =3D 0; i < md->entries; i++)
+        jbig2_free(ctx->allocator, md->values[i]);
+      jbig2_free(ctx->allocator, md->values);
+    }
     jbig2_free(ctx->allocator, md);
 }
=20