diff --git a/extern/aurora b/extern/aurora index a923cc0db4..77ad549530 160000 --- a/extern/aurora +++ b/extern/aurora @@ -1 +1 @@ -Subproject commit a923cc0db4a8ee44b7780d7943e7d0a3a6a35167 +Subproject commit 77ad549530d39d86464b36bcf57798b88f5f3c64 diff --git a/src/dusk/OSReport.cpp b/src/dusk/OSReport.cpp index b89a708d78..a54bcf0c78 100644 --- a/src/dusk/OSReport.cpp +++ b/src/dusk/OSReport.cpp @@ -1,3 +1,5 @@ +#include + #include "aurora/lib/logging.hpp" #include "os_report.h" @@ -21,10 +23,35 @@ static bool checkEnabled() { static std::string FormatToString(const char* msg, va_list list) { int ret = vsnprintf(nullptr, 0, msg, list); - std::string buf(ret, '\0'); - vsnprintf(buf.data(), buf.size(), msg, list); - buf.pop_back(); - return buf; + if (ret <= 0) { + return {}; + } + ++ret; + std::unique_ptr buf(new char[ret]); + vsnprintf(buf.get(), ret, msg, list); + buf[ret - 1] = '\0'; + return {buf.get()}; +} + +void OSReport(const char* fmt, ...) { + if (!checkEnabled()) { + return; + } + va_list args; + va_start(args, fmt); + const auto str = FormatToString(fmt, args); + va_end(args); + + Log.info("{}", str); +} + +void OSPanic(const char* file, int line, const char* fmt, ...) { + va_list args; + va_start(args, fmt); + const auto str = FormatToString(fmt, args); + va_end(args); + + Log.fatal("[{}:{}] {}", file, line, str); } void OSReport_Error(const char* fmt, ...) {