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);
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))
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);
}
}
if (NULL != *target)
{
- memcpy (*target, dst, clen + sizeof (struct MetaDataHeader));
+ if (GNUNET_YES == comp)
+ memcpy (*target, dst, clen + sizeof (struct MetaDataHeader));
+ else
+ memcpy (*target, dst, left + sizeof (struct MetaDataHeader));
GNUNET_free (dst);
}
else
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);