summaryrefslogtreecommitdiff
path: root/Source/Core/Common/MemoryUtil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/MemoryUtil.cpp')
-rw-r--r--Source/Core/Common/MemoryUtil.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/Source/Core/Common/MemoryUtil.cpp b/Source/Core/Common/MemoryUtil.cpp
index f7e1d7d902..a741deef4f 100644
--- a/Source/Core/Common/MemoryUtil.cpp
+++ b/Source/Core/Common/MemoryUtil.cpp
@@ -158,6 +158,25 @@ void FreeAlignedMemory(void* ptr)
}
}
+void ReadProtectMemory(void* ptr, size_t size)
+{
+ bool error_occurred = false;
+
+#ifdef _WIN32
+ DWORD oldValue;
+ if (!VirtualProtect(ptr, size, PAGE_NOACCESS, &oldValue))
+ error_occurred = true;
+#else
+ int retval = mprotect(ptr, size, PROT_NONE);
+
+ if (retval != 0)
+ error_occurred = true;
+#endif
+
+ if (error_occurred)
+ PanicAlert("ReadProtectMemory failed!\n%s", GetLastErrorMsg());
+}
+
void WriteProtectMemory(void* ptr, size_t size, bool allowExecute)
{
bool error_occurred = false;