/* For a reassembled-packet hash table entry, free the fragment data to which the value refers and also the key itself.  */
static gboolean free_all_reassembled_fragments(gpointer key_arg _U_, gpointer value, gpointer user_data)
/* For a reassembled-packet hash table entry, free the fragment data to which the value refers and also the key itself.  */
static gboolean free_all_reassembled_fragments(gpointer key_arg _U_, gpointer value, gpointer user_data)
{
	GPtrArray *allocated_fragments = (GPtrArray *) user_data;
	fragment_head *fd_head;
	for (fd_head = (fragment_head *)value; fd_head != NULL; fd_head = fd_head->next) {
		if (fd_head->flags != FD_VISITED_FREE) {
			if (fd_head->flags & FD_SUBSET_TVB)
				fd_head->tvb_data = NULL;
			g_ptr_array_add(allocated_fragments, fd_head);
			fd_head->flags = FD_VISITED_FREE;
		}
	}
	return TRUE;
}