#if ENABLE_SLOW_MEMORYINFO
memoryinfo_free(&htsmsg_field_memoryinfo,
- sizeof(*f) + f->hmf_edata_size);
+ sizeof(htsmsg_field_t) + f->hmf_edata_size);
#endif
free(f);
}
void
htsmsg_destroy(htsmsg_t *msg)
{
-#if ENABLE_SLOW_MEMORYINFO
- size_t size = 0;
-#endif
-
if(msg == NULL)
return;
if (msg->hm_data) {
free((void *)msg->hm_data);
#if ENABLE_SLOW_MEMORYINFO
- size += msg->hm_data_size;
+ memoryinfo_free(&htsmsg_memoryinfo, msg->hm_data_size);
#endif
}
#if ENABLE_SLOW_MEMORYINFO
- memoryinfo_free(&htsmsg_memoryinfo, sizeof(htsmsg_t) + size);
+ memoryinfo_free(&htsmsg_memoryinfo, sizeof(htsmsg_t));
#endif
free(msg);
}
memoryinfo_remove(&htsmsg_field_memoryinfo, strlen(f->hmf_str) + 1);
#endif
free((void *)f->hmf_str);
+ f->hmf_flags &= ~HMF_ALLOCED;
}
else if (f->hmf_flags & HMF_INALLOCED) {
if (strlen(f->hmf_str) >= strlen(str)) {
memoryinfo_remove(&htsmsg_field_memoryinfo, f->hmf_binsize);
#endif
free((void *)f->hmf_bin);
+ f->hmf_flags &= ~HMF_ALLOCED;
}
else if (f->hmf_flags & HMF_INALLOCED) {
if (f->hmf_binsize >= len) {
m->hm_data_size = 0;
m->hm_islist = sub->hm_islist;
TAILQ_MOVE(&m->hm_fields, &sub->hm_fields, hmf_link);
-#if ENABLE_SLOW_MEMORYINFO
- memoryinfo_free(&htsmsg_memoryinfo, sizeof(htsmsg_t));
-#endif
htsmsg_destroy(sub);
if (f->hmf_type == (m->hm_islist ? HMF_LIST : HMF_MAP))
m->hm_data_size = 0;
TAILQ_MOVE(&m->hm_fields, &sub->hm_fields, hmf_link);
m->hm_islist = sub->hm_islist;
-#if ENABLE_SLOW_MEMORYINFO
- memoryinfo_free(&htsmsg_memoryinfo, sizeof(htsmsg_t));
-#endif
htsmsg_destroy(sub);
}
l->hm_data = NULL;
l->hm_data_size = 0;
TAILQ_MOVE(&l->hm_fields, &m->hm_fields, hmf_link);
-#if ENABLE_SLOW_MEMORYINFO
- memoryinfo_free(&htsmsg_memoryinfo, sizeof(htsmsg_t));
-#endif
htsmsg_destroy(m);
}
}