From cf59101497dd99878ddb2baa5b97b32e3495da18 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Sun, 28 Aug 2016 20:52:47 +0200 Subject: [PATCH] Exception shit --- deps/fmt | 2 +- src/Components/Modules/Exception.cpp | 14 +++++++++++++- src/Components/Modules/Exception.hpp | 3 +++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/deps/fmt b/deps/fmt index 2ae6bca4..0d25f6fc 160000 --- a/deps/fmt +++ b/deps/fmt @@ -1 +1 @@ -Subproject commit 2ae6bca488795929a0207d109e135751f10c53d9 +Subproject commit 0d25f6fcbbf0a867b939a5501965ee4462b21ee6 diff --git a/src/Components/Modules/Exception.cpp b/src/Components/Modules/Exception.cpp index bab77313..da3dd338 100644 --- a/src/Components/Modules/Exception.cpp +++ b/src/Components/Modules/Exception.cpp @@ -9,6 +9,8 @@ namespace Components { + Utils::Hook Exception::SetFilterHook; + bool Exception::UploadMinidump(std::string filename) { if (Utils::IO::FileExists(filename)) @@ -86,7 +88,10 @@ namespace Components LPTOP_LEVEL_EXCEPTION_FILTER WINAPI Exception::SetUnhandledExceptionFilterStub(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter) { + Exception::SetFilterHook.Uninstall(); SetUnhandledExceptionFilter(&Exception::ExceptionFilter); + Exception::SetFilterHook.Install(); + return lpTopLevelExceptionFilter; } @@ -110,7 +115,9 @@ namespace Components Game::R_AddCmdDrawText("DEBUG-BUILD", 0x7FFFFFFF, font, 15.0f, 10.0f + Game::R_TextHeight(font), 1.0f, 1.0f, 0.0f, color, Game::ITEM_TEXTSTYLE_SHADOWED); }); #else - Utils::Hook::Set(0x6D70AC, Exception::SetUnhandledExceptionFilterStub); + Exception::SetFilterHook.Initialize(SetUnhandledExceptionFilter, Exception::SetUnhandledExceptionFilterStub, HOOK_JUMP); + Exception::SetFilterHook.Install(); + SetUnhandledExceptionFilter(&Exception::ExceptionFilter); #endif @@ -141,4 +148,9 @@ namespace Components Command::Execute(command, false); }); } + + Exception::~Exception() + { + Exception::SetFilterHook.Uninstall(); + } } diff --git a/src/Components/Modules/Exception.hpp b/src/Components/Modules/Exception.hpp index 8e70ffea..00e24134 100644 --- a/src/Components/Modules/Exception.hpp +++ b/src/Components/Modules/Exception.hpp @@ -4,6 +4,7 @@ namespace Components { public: Exception(); + ~Exception(); #ifdef DEBUG const char* GetName() { return "Exception"; }; @@ -14,5 +15,7 @@ namespace Components static LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilterStub(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); static bool UploadMinidump(std::string filename); + + static Utils::Hook SetFilterHook; }; }