1) use freeHeader(), not free() after writeheader()
authorewt <devnull@localhost>
Mon, 21 Oct 1996 01:22:47 +0000 (01:22 +0000)
committerewt <devnull@localhost>
Mon, 21 Oct 1996 01:22:47 +0000 (01:22 +0000)
2) free iterators in copyHeader()
3) free string arrays after interation

CVS patchset: 1119
CVS date: 1996/10/21 01:22:47

lib/header.c

index b81e9a3..882c5e1 100644 (file)
@@ -159,9 +159,14 @@ Header copyHeader(Header h)
     /* The result here is that the data is also sorted */
     while (nextIterator(headerIter, &tag, &type, &ptr, &count)) {
        addEntry(res, tag, type, ptr, count);
+
+       if (type == STRING_ARRAY_TYPE) free(ptr);
     }
 
     res->fully_sorted = 1;
+
+    freeIterator(headerIter);
+
     return res;
 }
 
@@ -223,7 +228,7 @@ void writeHeader(int fd, Header h, int magicp)
     write(fd, converted_data, h->data_used);
     free(converted_data);
 
-    free(h);
+    freeHeader(h);
 }
 
 static void *dataHostToNetwork(Header h)