From 5aa1046541c9d68c2776125eff14543dc7f5d40b Mon Sep 17 00:00:00 2001 From: WerWolv Date: Fri, 15 Mar 2024 21:06:47 +0100 Subject: [PATCH] fix: Potential crash when log file is unavailable --- lib/libimhex/include/hex/helpers/logger.hpp | 32 ++++++++++++--------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/lib/libimhex/include/hex/helpers/logger.hpp b/lib/libimhex/include/hex/helpers/logger.hpp index 245c22aef..ca7d44b03 100644 --- a/lib/libimhex/include/hex/helpers/logger.hpp +++ b/lib/libimhex/include/hex/helpers/logger.hpp @@ -42,13 +42,15 @@ namespace hex::log { std::scoped_lock lock(getLoggerMutex()); auto dest = getDestination(); - printPrefix(dest, ts, level, IMHEX_PROJECT_NAME); + try { + printPrefix(dest, ts, level, IMHEX_PROJECT_NAME); - auto message = fmt::format(fmt::runtime(fmt), args...); - fmt::print(dest, "{}\n", message); - fflush(dest); + auto message = fmt::format(fmt::runtime(fmt), args...); + fmt::print(dest, "{}\n", message); + fflush(dest); - addLogEntry(IMHEX_PROJECT_NAME, level, std::move(message)); + addLogEntry(IMHEX_PROJECT_NAME, level, std::move(message)); + } catch (const std::exception&) { } } namespace color { @@ -94,19 +96,23 @@ namespace hex::log { [[maybe_unused]] void print(const std::string &fmt, auto && ... args) { std::scoped_lock lock(impl::getLoggerMutex()); - auto dest = impl::getDestination(); - auto message = fmt::format(fmt::runtime(fmt), args...); - fmt::print(dest, "{}", message); - fflush(dest); + try { + auto dest = impl::getDestination(); + auto message = fmt::format(fmt::runtime(fmt), args...); + fmt::print(dest, "{}", message); + fflush(dest); + } catch (const std::exception&) { } } [[maybe_unused]] void println(const std::string &fmt, auto && ... args) { std::scoped_lock lock(impl::getLoggerMutex()); - auto dest = impl::getDestination(); - auto message = fmt::format(fmt::runtime(fmt), args...); - fmt::print(dest, "{}\n", message); - fflush(dest); + try { + auto dest = impl::getDestination(); + auto message = fmt::format(fmt::runtime(fmt), args...); + fmt::print(dest, "{}\n", message); + fflush(dest); + } catch (const std::exception&) { } } } \ No newline at end of file