From bb130b67b8860242c633d236979301bdf6ce8b65 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Sun, 22 Dec 2024 17:03:12 -0600 Subject: [PATCH] [wpiutil] DataLogWriter: Don't crash on file open error (#7579) --- wpiutil/src/main/native/cpp/DataLogWriter.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/wpiutil/src/main/native/cpp/DataLogWriter.cpp b/wpiutil/src/main/native/cpp/DataLogWriter.cpp index 371a2bf901..b33266f75b 100644 --- a/wpiutil/src/main/native/cpp/DataLogWriter.cpp +++ b/wpiutil/src/main/native/cpp/DataLogWriter.cpp @@ -12,14 +12,22 @@ using namespace wpi::log; +static std::unique_ptr CheckOpen(std::string_view filename, + std::error_code& ec) { + auto rv = std::make_unique(filename, ec); + if (ec) { + return nullptr; + } + return rv; +} + DataLogWriter::DataLogWriter(std::string_view filename, std::error_code& ec, std::string_view extraHeader) : DataLogWriter{s_defaultMessageLog, filename, ec, extraHeader} {} DataLogWriter::DataLogWriter(wpi::Logger& msglog, std::string_view filename, std::error_code& ec, std::string_view extraHeader) - : DataLogWriter{msglog, std::make_unique(filename, ec), - extraHeader} { + : DataLogWriter{msglog, CheckOpen(filename, ec), extraHeader} { if (ec) { Stop(); }