From 86e2016257efab15a90791c1688beea6ee5fce05 Mon Sep 17 00:00:00 2001 From: Julien Desfossez Date: Thu, 25 May 2017 12:09:44 -0400 Subject: [PATCH] trimmer: cleanup the packet_map if iterator destroyed early MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Julien Desfossez Signed-off-by: Jérémie Galarneau --- plugins/utils/trimmer/iterator.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) 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 -- 2.34.1