From 2bbd2bc1a25dd3843ba8e75c2e1bcfefa3d445e3 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sat, 25 Jun 2022 19:45:54 +0100 Subject: Prevent writing to loggers whilst deleting a logger. --- src/logging.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/logging.cpp b/src/logging.cpp index 83d4322e3..85c18fde7 100644 --- a/src/logging.cpp +++ b/src/logging.cpp @@ -164,7 +164,9 @@ Log::Manager::Manager() void Log::Manager::CloseLogs() { + logging = true; // Prevent writing to dying loggers. loggers.erase(std::remove_if(loggers.begin(), loggers.end(), [](const Info& info) { return info.config; }), loggers.end()); + logging = false; } void Log::Manager::EnableDebugMode() @@ -250,8 +252,11 @@ void Log::Manager::RegisterServices() void Log::Manager::UnloadEngine(const Engine* engine) { + logging = true; // Prevent writing to dying loggers. size_t logger_count = loggers.size(); loggers.erase(std::remove_if(loggers.begin(), loggers.end(), [&engine](const Info& info) { return info.engine == engine; }), loggers.end()); + logging = false; + Normal("LOG", "The %s log engine is unloading; removed %zu/%zu loggers.", engine->name.c_str(), logger_count - loggers.size(), logger_count); } -- cgit v1.3.1-10-gc9f91