Uninstalls LogManager handlers on shutdown

In case something manages to have stayed alive and tried throwing a
message, this will no longer crash.

Noticed this with the previous commit
This commit is contained in:
Ryan Houdek committed 2021-01-11 09:03:56 -08:00
1 parent f83698cb50
commit aa3b77e4c8
3 files changed
+7

No files matched your search

+2
View File
@@ -7,6 +7,7 @@ namespace LogMan {
namespace Throw {
std::vector<ThrowHandler> Handlers;
void InstallHandler(ThrowHandler Handler) { Handlers.emplace_back(Handler); }
void UnInstallHandlers() { Handlers.clear(); }
[[noreturn]] void M(const char *fmt, va_list args) {
size_t MsgSize = 1024;
@@ -30,6 +31,7 @@ void InstallHandler(ThrowHandler Handler) { Handlers.emplace_back(Handler); }
namespace Msg {
std::vector<MsgHandler> Handlers;
void InstallHandler(MsgHandler Handler) { Handlers.emplace_back(Handler); }
void UnInstallHandlers() { Handlers.clear(); }
void M(DebugLevels Level, const char *fmt, va_list args) {
size_t MsgSize = 1024;
+2
View File
@@ -19,6 +19,7 @@ constexpr DebugLevels MSG_LEVEL = INFO;
namespace Throw {
using ThrowHandler = void(*)(char const *Message);
void InstallHandler(ThrowHandler Handler);
void UnInstallHandlers();
[[noreturn]] void M(const char *fmt, va_list args);
@@ -40,6 +41,7 @@ static inline void A(bool, const char*, ...) {}
namespace Msg {
using MsgHandler = void(*)(DebugLevels Level, char const *Message);
void InstallHandler(MsgHandler Handler);
void UnInstallHandlers();
void M(DebugLevels Level, const char *fmt, va_list args);
+3
View File
@@ -283,6 +283,9 @@ int main(int argc, char **argv, char **const envp) {
FEXCore::Config::Shutdown();
LogMan::Throw::UnInstallHandlers();
LogMan::Msg::UnInstallHandlers();
if (OutputFD != stderr &&
OutputFD != stdout &&
OutputFD != nullptr) {