Fix writer: leak of the event classes
authorJulien Desfossez <jdesfossez@efficios.com>
Fri, 20 Jan 2017 21:11:01 +0000 (16:11 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Sun, 28 May 2017 16:57:39 +0000 (12:57 -0400)
We have to release the writer_event_class once it is added to the
writer_stream_class. This also highlighted a problem with the ownership
of the stream, stream_class and writer objects which is now fixed.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
plugins/writer/write.c
plugins/writer/writer.c

index 970eaea0c777a2275cbfbb6aaf792a7b8c069919..5ee5d0662a2c8d4eb8167d26c4a9efc5813a7d28 100644 (file)
@@ -333,6 +333,7 @@ enum bt_component_status copy_event_classes(FILE *err,
                        goto end;
                }
                bt_put(event_class);
+               bt_put(writer_event_class);
        }
 
 end:
@@ -732,6 +733,7 @@ struct bt_ctf_stream *get_writer_stream(
        } else {
                writer_stream = insert_new_stream(writer_component, ctf_writer,
                                stream_class, stream);
+               bt_get(writer_stream);
        }
 
        bt_put(ctf_writer);
index f89ac7460a80f56e5d5f5eba0c48f972bc2b4519..48c3152a7987d53c0e848169a44db9b9d4fa54c9 100644 (file)
@@ -69,22 +69,19 @@ void finalize_writer_component(struct bt_private_component *component)
 static
 void unref_stream_class(struct bt_ctf_stream_class *writer_stream_class)
 {
-       BT_PUT(writer_stream_class);
-       g_free(writer_stream_class);
+       return;
 }
 
 static
 void unref_stream(struct bt_ctf_stream_class *writer_stream)
 {
-       BT_PUT(writer_stream);
-       g_free(writer_stream);
+       bt_put(writer_stream);
 }
 
 static
 void unref_trace(struct bt_ctf_writer *writer)
 {
-       BT_PUT(writer);
-       g_free(writer);
+       return;
 }
 
 static
This page took 0.025063 seconds and 4 git commands to generate.