Fix writer: missing put ref to values and types
authorJulien Desfossez <jdesfossez@efficios.com>
Fri, 20 Jan 2017 21:08:58 +0000 (16:08 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Sun, 28 May 2017 16:57:39 +0000 (12:57 -0400)
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 84fe77d4aea526dd0b2c27156908588ccc39d0e2..970eaea0c777a2275cbfbb6aaf792a7b8c069919 100644 (file)
@@ -237,6 +237,7 @@ struct bt_ctf_event_class *copy_event_class(FILE *err, struct bt_ctf_event_class
 
                ret = bt_ctf_event_class_set_attribute(writer_event_class,
                                attr_name, attr_value);
+               bt_put(attr_value);
                if (ret < 0) {
                        fprintf(err, "[error] %s in %s:%d\n", __func__,
                                        __FILE__, __LINE__);
@@ -247,6 +248,7 @@ struct bt_ctf_event_class *copy_event_class(FILE *err, struct bt_ctf_event_class
 
        context = bt_ctf_event_class_get_context_type(event_class);
        ret = bt_ctf_event_class_set_context_type(writer_event_class, context);
+       bt_put(context);
        if (ret < 0) {
                fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
                                __LINE__);
@@ -388,6 +390,7 @@ enum bt_component_status copy_stream_class(FILE *err,
 
        ret_int = bt_ctf_stream_class_set_packet_context_type(
                        writer_stream_class, type);
+       bt_put(type);
        if (ret_int < 0) {
                ret = BT_COMPONENT_STATUS_ERROR;
                fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
@@ -405,6 +408,7 @@ enum bt_component_status copy_stream_class(FILE *err,
 
        ret_int = bt_ctf_stream_class_set_event_header_type(
                        writer_stream_class, type);
+       bt_put(type);
        if (ret_int < 0) {
                ret = BT_COMPONENT_STATUS_ERROR;
                fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
@@ -413,8 +417,15 @@ enum bt_component_status copy_stream_class(FILE *err,
        }
 
        type = bt_ctf_stream_class_get_event_context_type(stream_class);
+       if (!type) {
+               ret = BT_COMPONENT_STATUS_ERROR;
+               fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
+                               __LINE__);
+               goto end_put_trace;
+       }
        ret_int = bt_ctf_stream_class_set_event_context_type(
                        writer_stream_class, type);
+       bt_put(type);
        if (ret_int < 0) {
                ret = BT_COMPONENT_STATUS_ERROR;
                fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
@@ -476,6 +487,7 @@ enum bt_component_status copy_trace(FILE *err, struct bt_ctf_writer *ctf_writer,
 
                ret_int = bt_ctf_trace_set_environment_field(writer_trace,
                                name, value);
+               bt_put(value);
                if (ret_int < 0) {
                        fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
                                        __LINE__);
index 8f1d2fc1942eec526cb457a5954cbf5a635eec46..f89ac7460a80f56e5d5f5eba0c48f972bc2b4519 100644 (file)
@@ -272,6 +272,7 @@ enum bt_component_status writer_component_init(
                ret = BT_COMPONENT_STATUS_INVALID;
                goto error;
        }
+       bt_put(value);
 
        writer_component->base_path = g_string_new(path);
        if (!writer_component) {
This page took 0.025491 seconds and 4 git commands to generate.