void epan_dissect_reset(epan_dissect_t *edt) { /* We have to preserve the pool pointer across the memzeroing */ wmem_allocator_t *tmp; g_assert(edt); g_slist_free(edt->pi.proto_data); g_slist_free(edt->pi.dependent_frames); /* Free the data sources list. */ free_data_sources(&edt->pi); if (edt->tvb) { /* Free all tvb's chained from this tvb */ tvb_free_chain(edt->tvb); edt->tvb = NULL; } if (edt->tree) proto_tree_reset(edt->tree); tmp = edt->pi.pool; wmem_free_all(tmp); memset(&edt->pi, 0, sizeof(edt->pi)); edt->pi.pool = tmp; }
void epan_dissect_reset(epan_dissect_t *edt) { /* epan_dissect_cleanup(edt) without freeing tree */ g_slist_free(edt->pi.dependent_frames); free_data_sources(&edt->pi); tvb_free_chain(edt->tvb); /* epan_dissect_init(edt, create_proto, visible_proto) */ edt->pi.dependent_frames = NULL; if (edt->tree) proto_tree_reset(edt->tree); }