summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorShawn Hoffman <godisgovernment@gmail.com>2020-08-18 21:55:00 -0700
committerShawn Hoffman <godisgovernment@gmail.com>2021-01-10 15:11:18 -0800
commit2ba4fd960e20fc7e50280993967a6cd540fb77ab (patch)
treea1b7bef369a9746a916dc98a7de5f2c883f896dc /Source
parent49b9deeb03ef92844ce826bf52a4e5baeb7fca9b (diff)
small prettification
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/MemTools.cpp30
1 files changed, 16 insertions, 14 deletions
diff --git a/Source/Core/Core/MemTools.cpp b/Source/Core/Core/MemTools.cpp
index e0e0d6695b..813a2ef195 100644
--- a/Source/Core/Core/MemTools.cpp
+++ b/Source/Core/Core/MemTools.cpp
@@ -9,6 +9,7 @@
#include <cstring>
#include <vector>
+#include "Common/Assert.h"
#include "Common/CommonFuncs.h"
#include "Common/CommonTypes.h"
#include "Common/MsgHandler.h"
@@ -28,30 +29,32 @@ namespace EMM
{
#ifdef _WIN32
+static PVOID s_veh_handle;
+
static LONG NTAPI Handler(PEXCEPTION_POINTERS pPtrs)
{
switch (pPtrs->ExceptionRecord->ExceptionCode)
{
case EXCEPTION_ACCESS_VIOLATION:
{
- int accessType = (int)pPtrs->ExceptionRecord->ExceptionInformation[0];
- if (accessType == 8) // Rule out DEP
+ ULONG_PTR access_type = pPtrs->ExceptionRecord->ExceptionInformation[0];
+ if (access_type == 8) // Rule out DEP
{
- return (DWORD)EXCEPTION_CONTINUE_SEARCH;
+ return EXCEPTION_CONTINUE_SEARCH;
}
// virtual address of the inaccessible data
- uintptr_t badAddress = (uintptr_t)pPtrs->ExceptionRecord->ExceptionInformation[1];
- CONTEXT* ctx = pPtrs->ContextRecord;
+ uintptr_t fault_address = (uintptr_t)pPtrs->ExceptionRecord->ExceptionInformation[1];
+ SContext* ctx = pPtrs->ContextRecord;
- if (JitInterface::HandleFault(badAddress, ctx))
+ if (JitInterface::HandleFault(fault_address, ctx))
{
- return (DWORD)EXCEPTION_CONTINUE_EXECUTION;
+ return EXCEPTION_CONTINUE_EXECUTION;
}
else
{
// Let's not prevent debugging.
- return (DWORD)EXCEPTION_CONTINUE_SEARCH;
+ return EXCEPTION_CONTINUE_SEARCH;
}
}
@@ -84,18 +87,17 @@ static LONG NTAPI Handler(PEXCEPTION_POINTERS pPtrs)
void InstallExceptionHandler()
{
- // Make sure this is only called once per process execution
- // Instead, could make a Uninstall function, but whatever..
- static bool handlerInstalled = false;
- if (handlerInstalled)
+ if (s_veh_handle)
return;
- AddVectoredExceptionHandler(TRUE, Handler);
- handlerInstalled = true;
+ s_veh_handle = AddVectoredExceptionHandler(TRUE, Handler);
+ ASSERT(s_veh_handle);
}
void UninstallExceptionHandler()
{
+ ULONG status = RemoveVectoredExceptionHandler(s_veh_handle);
+ ASSERT(status);
}
#elif defined(__APPLE__) && !defined(USE_SIGACTION_ON_APPLE)