From 2873fb8fd002ecb0c72d52f77a854523575ee603 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Tue, 9 Apr 2024 17:08:19 -0400 Subject: [PATCH] src.ctf.fs: make get_stream_instance_unique_name return `const std::string &` We always return the first stream's name. Return a reference to that name instead of a new object and a copy of the string. Change-Id: I657265b74e0566a36f2ae05f6b5b1b6d21f53c66 Signed-off-by: Simon Marchi Reviewed-on: https://review.lttng.org/c/babeltrace/+/8290 Reviewed-by: Philippe Proulx Reviewed-on: https://review.lttng.org/c/babeltrace/+/12327 Tested-by: jenkins --- src/plugins/ctf/fs-src/fs.cpp | 42 ++++++++--------------------------- 1 file changed, 9 insertions(+), 33 deletions(-) diff --git a/src/plugins/ctf/fs-src/fs.cpp b/src/plugins/ctf/fs-src/fs.cpp index 0fbe96bc..ed98c961 100644 --- a/src/plugins/ctf/fs-src/fs.cpp +++ b/src/plugins/ctf/fs-src/fs.cpp @@ -1707,27 +1707,15 @@ end: return ret; } -static GString *get_stream_instance_unique_name(struct ctf_fs_ds_file_group *ds_file_group) +static const std::string& +get_stream_instance_unique_name(struct ctf_fs_ds_file_group *ds_file_group) { - GString *name; - struct ctf_fs_ds_file_info *ds_file_info; - - name = g_string_new(NULL); - if (!name) { - goto end; - } - /* - * If there's more than one stream file in the stream file - * group, the first (earliest) stream file's path is used as - * the stream's unique name. + * The first (earliest) stream file's path is used as the stream's unique + * name. */ BT_ASSERT(!ds_file_group->ds_file_infos.empty()); - ds_file_info = ds_file_group->ds_file_infos[0].get(); - g_string_assign(name, ds_file_info->path.c_str()); - -end: - return name; + return ds_file_group->ds_file_infos[0]->path; } /* Create the IR stream objects for ctf_fs_trace. */ @@ -1735,14 +1723,9 @@ end: static int create_streams_for_trace(struct ctf_fs_trace *ctf_fs_trace) { int ret; - GString *name = NULL; for (const auto& ds_file_group : ctf_fs_trace->ds_file_groups) { - name = get_stream_instance_unique_name(ds_file_group.get()); - - if (!name) { - goto error; - } + const std::string& name = get_stream_instance_unique_name(ds_file_group.get()); BT_ASSERT(ds_file_group->sc->ir_sc); BT_ASSERT(ctf_fs_trace->trace); @@ -1766,23 +1749,20 @@ static int create_streams_for_trace(struct ctf_fs_trace *ctf_fs_trace) BT_CPPLOGE_APPEND_CAUSE_SPEC(ctf_fs_trace->logger, "Cannot create stream for DS file group: " "addr={}, stream-name=\"{}\"", - fmt::ptr(ds_file_group), name->str); + fmt::ptr(ds_file_group), name); goto error; } ds_file_group->stream = bt2::Stream::Shared::createWithoutRef(stream); - ret = bt_stream_set_name(ds_file_group->stream->libObjPtr(), name->str); + ret = bt_stream_set_name(ds_file_group->stream->libObjPtr(), name.c_str()); if (ret) { BT_CPPLOGE_APPEND_CAUSE_SPEC(ctf_fs_trace->logger, "Cannot set stream's name: " "addr={}, stream-name=\"{}\"", - fmt::ptr(ds_file_group->stream->libObjPtr()), name->str); + fmt::ptr(ds_file_group->stream->libObjPtr()), name); goto error; } - - g_string_free(name, TRUE); - name = NULL; } ret = 0; @@ -1792,10 +1772,6 @@ error: ret = -1; end: - - if (name) { - g_string_free(name, TRUE); - } return ret; } -- 2.34.1