X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=plugins%2Flttng-utils%2Fplugin.c;h=9436ee34f7a2edd2fb2572b0a889cb726961c19b;hb=1c78e8395f42d97004b0e249e7806060b45ae7f2;hp=c6e75f59f122a929ac30965b19dc57afa3fe9d0a;hpb=504db471cbe39293f9abbab8353646906127292b;p=babeltrace.git diff --git a/plugins/lttng-utils/plugin.c b/plugins/lttng-utils/plugin.c index c6e75f59..9436ee34 100644 --- a/plugins/lttng-utils/plugin.c +++ b/plugins/lttng-utils/plugin.c @@ -44,6 +44,17 @@ #include "debug-info.h" #include "copy.h" +static +gboolean empty_trace_map(gpointer key, gpointer value, gpointer user_data) +{ + struct debug_info_trace *di_trace = value; + + di_trace->trace_static = 1; + debug_info_close_trace(di_trace->debug_it, di_trace); + + return TRUE; +} + static void destroy_debug_info_data(struct debug_info_component *debug_info) { @@ -76,7 +87,8 @@ end: static void unref_trace(struct debug_info_trace *di_trace) { - bt_put(di_trace->trace); + bt_put(di_trace->writer_trace); + g_free(di_trace); } static @@ -90,16 +102,14 @@ void debug_info_iterator_destroy(struct bt_private_notification_iterator *it) if (it_data->input_iterator_group) { g_ptr_array_free(it_data->input_iterator_group, TRUE); } + + g_hash_table_foreach_remove(it_data->trace_map, + empty_trace_map, it_data); + g_hash_table_destroy(it_data->trace_map); + bt_put(it_data->current_notification); bt_put(it_data->input_iterator); - g_hash_table_destroy(it_data->trace_map); - /* - * TODO - g_hash_table_destroy(it_data->stream_map); - g_hash_table_destroy(it_data->stream_class_map); - g_hash_table_destroy(it_data->packet_map); - g_hash_table_destroy(it_data->trace_debug_map); - */ + g_free(it_data); } @@ -127,6 +137,7 @@ struct bt_notification *handle_notification(FILE *err, writer_packet); assert(new_notification); bt_put(packet); + bt_put(writer_packet); break; } case BT_NOTIFICATION_TYPE_PACKET_END: @@ -145,6 +156,7 @@ struct bt_notification *handle_notification(FILE *err, writer_packet); assert(new_notification); bt_put(packet); + bt_put(writer_packet); break; } case BT_NOTIFICATION_TYPE_EVENT: