From: Julien Desfossez Date: Thu, 25 May 2017 16:09:44 +0000 (-0400) Subject: trimmer: cleanup the packet_map if iterator destroyed early X-Git-Tag: v2.0.0-pre1~175 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=86e2016257efab15a90791c1688beea6ee5fce05 trimmer: cleanup the packet_map if iterator destroyed early Signed-off-by: Julien Desfossez Signed-off-by: Jérémie Galarneau --- diff --git a/plugins/utils/trimmer/iterator.c b/plugins/utils/trimmer/iterator.c index f159e9f0..06623086 100644 --- a/plugins/utils/trimmer/iterator.c +++ b/plugins/utils/trimmer/iterator.c @@ -51,17 +51,28 @@ #include "iterator.h" #include "copy.h" +static +gboolean close_packets(gpointer key, gpointer value, gpointer user_data) +{ + struct bt_ctf_packet *writer_packet = value; + + bt_put(writer_packet); + return TRUE; +} + BT_HIDDEN void trimmer_iterator_finalize(struct bt_private_notification_iterator *it) { - struct trimmer_iterator *it_data; + struct trimmer_iterator *trim_it; - it_data = bt_private_notification_iterator_get_user_data(it); - assert(it_data); + trim_it = bt_private_notification_iterator_get_user_data(it); + assert(trim_it); - bt_put(it_data->input_iterator); - g_hash_table_destroy(it_data->packet_map); - g_free(it_data); + bt_put(trim_it->input_iterator); + g_hash_table_foreach_remove(trim_it->packet_map, + close_packets, NULL); + g_hash_table_destroy(trim_it->packet_map); + g_free(trim_it); } BT_HIDDEN