- test for external iterator
[oweals/gnunet.git] / src / util / container_meta_data.c
index 668c126facbbd85239bde1600589246ec0de456a..a868e817da61580925a6200074a81aca3ed3e31a 100644 (file)
@@ -804,7 +804,7 @@ GNUNET_CONTAINER_meta_data_serialize (const struct GNUNET_CONTAINER_MetaData
   mdata = (char *) &ent[md->item_count];
   off = size - (md->item_count * sizeof (struct MetaDataEntry));
   i = 0;
-  for (pos = md->items_tail; NULL != pos; pos = pos->prev)
+  for (pos = md->items_head; NULL != pos; pos = pos->next)
   {
     ent[i].type = htonl ((uint32_t) pos->type);
     ent[i].format = htonl ((uint32_t) pos->format);
@@ -835,7 +835,7 @@ GNUNET_CONTAINER_meta_data_serialize (const struct GNUNET_CONTAINER_MetaData
   cdata = NULL;
   left = size;
   i = 0;
-  for (pos = md->items_tail; NULL != pos; pos = pos->prev)
+  for (pos = md->items_head; NULL != pos; pos = pos->next)
   {
     comp = GNUNET_NO;
     if (0 == (opt & GNUNET_CONTAINER_META_DATA_SERIALIZE_NO_COMPRESS))
@@ -880,6 +880,7 @@ GNUNET_CONTAINER_meta_data_serialize (const struct GNUNET_CONTAINER_MetaData
         hdr->entries = htonl (md->item_count - i);
         memcpy (&dst[sizeof (struct MetaDataHeader)], cdata, clen);
         GNUNET_free (cdata);
+       cdata = NULL;
         GNUNET_free (ent);
         rlen = clen + sizeof (struct MetaDataHeader);
       }
@@ -925,6 +926,10 @@ GNUNET_CONTAINER_meta_data_serialize (const struct GNUNET_CONTAINER_MetaData
       left -= strlen (pos->plugin_name) + 1;
     if (NULL != pos->mime_type)
       left -= strlen (pos->mime_type) + 1;
+
+    GNUNET_free_non_null (cdata);
+    cdata = NULL;
+
     i++;
   }
   GNUNET_free (ent);