summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
10265eb)
If bt_self_component_sink_add_input_port fails, we don't free the
simple_sink_data instance.
Move the code to free a simple_sink_data in a new function,
simple_sink_data_destroy. Call it from simple_sink_finalize and from
simple_sink_init's error path.
Change-Id: If8f87ef4a39836e02ed1c125dc8feb160d21cc37
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/7196
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Tested-by: jenkins <jenkins@lttng.org>
struct simple_sink_init_method_data init_method_data;
};
struct simple_sink_init_method_data init_method_data;
};
+static
+void simple_sink_data_destroy(struct simple_sink_data *data)
+{
+ if (data) {
+ BT_OBJECT_PUT_REF_AND_RESET(data->msg_iter);
+ g_free(data);
+ }
+}
+
static
enum bt_component_class_initialize_method_status simple_sink_init(
bt_self_component_sink *self_comp,
static
enum bt_component_class_initialize_method_status simple_sink_init(
bt_self_component_sink *self_comp,
+ /* Transfer ownership to component */
bt_self_component_set_data(
bt_self_component_sink_as_self_component(self_comp), data);
bt_self_component_set_data(
bt_self_component_sink_as_self_component(self_comp), data);
+ simple_sink_data_destroy(data);
struct simple_sink_data *data = bt_self_component_get_data(
bt_self_component_sink_as_self_component(self_comp));
struct simple_sink_data *data = bt_self_component_get_data(
bt_self_component_sink_as_self_component(self_comp));
- if (data) {
- if (data->init_method_data.finalize_func) {
- /* Call user's finalization function */
- data->init_method_data.finalize_func(
- data->init_method_data.user_data);
- }
- BT_OBJECT_PUT_REF_AND_RESET(data->msg_iter);
- g_free(data);
+ if (data->init_method_data.finalize_func) {
+ /* Call user's finalization function */
+ data->init_method_data.finalize_func(
+ data->init_method_data.user_data);
+
+ simple_sink_data_destroy(data);