From: Simon Marchi Date: Fri, 5 Apr 2024 19:45:51 +0000 (-0400) Subject: src.ctf.fs: make ctf_fs_file_create return a unique_ptr X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=5ff12b250802d3e0d527f6a5d4c61f4d15e50294 src.ctf.fs: make ctf_fs_file_create return a unique_ptr Introduce ctf_fs_file::UP, make ctf_fs_file_create return that, adjust impacted callers. Change-Id: Ice241fd596af3d54e9c7bc7f562ca010bb5833aa Signed-off-by: Simon Marchi Reviewed-on: https://review.lttng.org/c/babeltrace/+/8260 Reviewed-by: Philippe Proulx Reviewed-on: https://review.lttng.org/c/babeltrace/+/12298 --- diff --git a/src/plugins/ctf/fs-src/data-stream-file.cpp b/src/plugins/ctf/fs-src/data-stream-file.cpp index bde54c7e..cea4a620 100644 --- a/src/plugins/ctf/fs-src/data-stream-file.cpp +++ b/src/plugins/ctf/fs-src/data-stream-file.cpp @@ -823,7 +823,7 @@ struct ctf_fs_ds_file *ctf_fs_ds_file_create(struct ctf_fs_trace *ctf_fs_trace, goto error; } - ds_file->file = ctf_fs_file_create(parentLogger); + ds_file->file = ctf_fs_file_create(parentLogger).release(); if (!ds_file->file) { goto error; } diff --git a/src/plugins/ctf/fs-src/file.cpp b/src/plugins/ctf/fs-src/file.cpp index 938c048d..d125789e 100644 --- a/src/plugins/ctf/fs-src/file.cpp +++ b/src/plugins/ctf/fs-src/file.cpp @@ -35,9 +35,15 @@ void ctf_fs_file_destroy(struct ctf_fs_file *file) delete file; } -struct ctf_fs_file *ctf_fs_file_create(const bt2c::Logger& parentLogger) +void ctf_fs_file_deleter::operator()(ctf_fs_file * const file) noexcept { - ctf_fs_file *file = new ctf_fs_file {parentLogger}; + ctf_fs_file_destroy(file); +} + +ctf_fs_file::UP ctf_fs_file_create(const bt2c::Logger& parentLogger) +{ + ctf_fs_file::UP file {new ctf_fs_file {parentLogger}}; + file->path = g_string_new(NULL); if (!file->path) { goto error; @@ -46,8 +52,7 @@ struct ctf_fs_file *ctf_fs_file_create(const bt2c::Logger& parentLogger) goto end; error: - ctf_fs_file_destroy(file); - file = NULL; + file.reset(); end: return file; diff --git a/src/plugins/ctf/fs-src/file.hpp b/src/plugins/ctf/fs-src/file.hpp index ccde384b..607c1a94 100644 --- a/src/plugins/ctf/fs-src/file.hpp +++ b/src/plugins/ctf/fs-src/file.hpp @@ -7,12 +7,21 @@ #ifndef CTF_FS_FILE_H #define CTF_FS_FILE_H +#include + #include #include "cpp-common/bt2c/logging.hpp" +struct ctf_fs_file_deleter +{ + void operator()(struct ctf_fs_file *file) noexcept; +}; + struct ctf_fs_file { + using UP = std::unique_ptr; + explicit ctf_fs_file(const bt2c::Logger& parentLogger) : logger {parentLogger, "PLUGIN/SRC.CTF.FS/FILE"} { @@ -31,7 +40,7 @@ struct ctf_fs_file void ctf_fs_file_destroy(struct ctf_fs_file *file); -struct ctf_fs_file *ctf_fs_file_create(const bt2c::Logger& parentLogger); +ctf_fs_file::UP ctf_fs_file_create(const bt2c::Logger& parentLogger); int ctf_fs_file_open(struct ctf_fs_file *file, const char *mode); diff --git a/src/plugins/ctf/fs-src/fs.cpp b/src/plugins/ctf/fs-src/fs.cpp index ac4c720c..8bdc1e0c 100644 --- a/src/plugins/ctf/fs-src/fs.cpp +++ b/src/plugins/ctf/fs-src/fs.cpp @@ -684,7 +684,7 @@ static int create_ds_file_groups(struct ctf_fs_trace *ctf_fs_trace) } /* Create the file. */ - file = ctf_fs_file_create(ctf_fs_trace->logger); + file = ctf_fs_file_create(ctf_fs_trace->logger).release(); if (!file) { BT_CPPLOGE_APPEND_CAUSE_SPEC( ctf_fs_trace->logger, diff --git a/src/plugins/ctf/fs-src/metadata.cpp b/src/plugins/ctf/fs-src/metadata.cpp index 86826179..01997017 100644 --- a/src/plugins/ctf/fs-src/metadata.cpp +++ b/src/plugins/ctf/fs-src/metadata.cpp @@ -37,7 +37,7 @@ end: static struct ctf_fs_file *get_file(const char *trace_path, const bt2c::Logger& logger) { - struct ctf_fs_file *file = ctf_fs_file_create(logger); + struct ctf_fs_file *file = ctf_fs_file_create(logger).release(); if (!file) { goto error;