aboutsummaryrefslogtreecommitdiff
path: root/src/logging.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2022-06-25 19:45:54 +0100
committerGravatar Sadie Powell2022-06-25 21:08:58 +0100
commit2bbd2bc1a25dd3843ba8e75c2e1bcfefa3d445e3 (patch)
treee345fc490473a1178c19ce8ace9cbf62707f6157 /src/logging.cpp
parentMake getEnum use the default instead of throwing. (diff)
Prevent writing to loggers whilst deleting a logger.
Diffstat (limited to 'src/logging.cpp')
-rw-r--r--src/logging.cpp5
1 files changed, 5 insertions, 0 deletions
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);
}