From ee49dfa5058c2ab3c199b49d5986a1fb7c49a2a5 Mon Sep 17 00:00:00 2001 From: Drifter Date: Sat, 14 Apr 2012 00:31:07 +0100 Subject: [PATCH] Fixed crash with StoreToAddress if memory wasn't writable (bug 5252, r=asherkin). --- core/smn_core.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/smn_core.cpp b/core/smn_core.cpp index 9bc4913d..ebadeef3 100644 --- a/core/smn_core.cpp +++ b/core/smn_core.cpp @@ -43,6 +43,7 @@ #include "Logger.h" #include "ExtensionSys.h" #include +#include #if defined PLATFORM_WINDOWS #include @@ -729,12 +730,15 @@ static cell_t StoreToAddress(IPluginContext *pContext, const cell_t *params) switch(size) { case NumberType_Int8: + SourceHook::SetMemAccess(addr, sizeof(uint8_t), SH_MEM_READ|SH_MEM_WRITE|SH_MEM_EXEC); *reinterpret_cast(addr) = data; break; case NumberType_Int16: + SourceHook::SetMemAccess(addr, sizeof(uint16_t), SH_MEM_READ|SH_MEM_WRITE|SH_MEM_EXEC); *reinterpret_cast(addr) = data; break; case NumberType_Int32: + SourceHook::SetMemAccess(addr, sizeof(uint32_t), SH_MEM_READ|SH_MEM_WRITE|SH_MEM_EXEC); *reinterpret_cast(addr) = data; break; default: