From 5edfa795431b25a5f75b597466f850df889bac19 Mon Sep 17 00:00:00 2001 From: bottiger1 <55270538+bottiger1@users.noreply.github.com> Date: Sun, 9 Jun 2024 10:17:29 -0700 Subject: [PATCH] Fix more sdktools crash on 64 bits (#2152) * fix sdktools crash on 64 bits * remove other 32bit-isms from sdktools * Swap sizeof(intptr_t) for sizeof(void *) --------- Co-authored-by: Nick Hastings --- extensions/sdktools/hooks.cpp | 4 ++-- extensions/sdktools/vhelpers.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/sdktools/hooks.cpp b/extensions/sdktools/hooks.cpp index 79094702b..706b478d6 100644 --- a/extensions/sdktools/hooks.cpp +++ b/extensions/sdktools/hooks.cpp @@ -234,7 +234,7 @@ void CHookManager::OnClientConnected(int client) } } - int hookid = SH_ADD_VPHOOK(IClientMessageHandler, ProcessVoiceData, (IClientMessageHandler *)((intptr_t)(pClient) + 4), SH_MEMBER(this, &CHookManager::ProcessVoiceData), true); + int hookid = SH_ADD_VPHOOK(IClientMessageHandler, ProcessVoiceData, (IClientMessageHandler *)((intptr_t)(pClient) + sizeof(void *)), SH_MEMBER(this, &CHookManager::ProcessVoiceData), true); hook.SetHookID(hookid); netProcessVoiceData.push_back(new CVTableHook(hook)); } @@ -584,7 +584,7 @@ bool CHookManager::SendFile(const char *filename, unsigned int transferID) #if !defined CLIENTVOICE_HOOK_SUPPORT bool CHookManager::ProcessVoiceData(CLC_VoiceData *msg) { - IClient *pClient = (IClient *)((intptr_t)(META_IFACEPTR(IClient)) - 4); + IClient *pClient = (IClient *)((intptr_t)(META_IFACEPTR(IClient)) - sizeof(void *)); if (pClient == NULL) { return true; diff --git a/extensions/sdktools/vhelpers.cpp b/extensions/sdktools/vhelpers.cpp index 7d5c5545d..0dfbc08c8 100644 --- a/extensions/sdktools/vhelpers.cpp +++ b/extensions/sdktools/vhelpers.cpp @@ -753,8 +753,8 @@ CEntityFactoryDictionary *GetEntityFactoryDictionary() int32_t funcOffset = *(int32_t *)((intptr_t)addr + offset); // Get real address of function - // Address of signature + offset of relative offset + sizeof(int32_t) offset + relative offset - addr = (void *)((intptr_t)addr + offset + 4 + funcOffset); + // Address of signature + offset of relative offset + pointer size + relative offset + addr = (void *)((intptr_t)addr + offset + sizeof(void *) + funcOffset); } pWrapper = g_pBinTools->CreateCall(addr, CallConv_Cdecl, &retData, NULL, 0);