From b51baee6cd98d96947024507ce36557490179941 Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Tue, 31 Jan 2023 23:09:22 +0100 Subject: [PATCH] Correct vtable name First vtable in the hierarchy of ConVar is the base table. --- r5dev/tier1/IConVar.cpp | 4 ++-- r5dev/tier1/IConVar.h | 8 ++++---- r5dev/tier1/cmd.cpp | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/r5dev/tier1/IConVar.cpp b/r5dev/tier1/IConVar.cpp index b1e1577e..863a5259 100644 --- a/r5dev/tier1/IConVar.cpp +++ b/r5dev/tier1/IConVar.cpp @@ -24,8 +24,8 @@ ConVar* ConVar::Create(const char* pszName, const char* pszDefaultValue, int nFl ConVar* pNewConVar = MemAllocSingleton()->Alloc(sizeof(ConVar)); // Allocate new memory with StdMemAlloc else we crash. memset(pNewConVar, '\0', sizeof(ConVar)); // Set all to null. - pNewConVar->m_pConCommandBaseVFTable = g_pConVarVFTable.RCast(); - pNewConVar->m_pIConVarVFTable = g_pIConVarVFTable.RCast(); + pNewConVar->m_pConCommandBaseVFTable = g_pConVarVBTable.RCast(); + pNewConVar->m_pIConVarVFTable = g_pConVarVFTable.RCast(); v_ConVar_Register(pNewConVar, pszName, pszDefaultValue, nFlags, pszHelpString, bMin, fMin, bMax, fMax, pCallback, pszUsageString); diff --git a/r5dev/tier1/IConVar.h b/r5dev/tier1/IConVar.h index 6cbafbe7..e42f9f8c 100644 --- a/r5dev/tier1/IConVar.h +++ b/r5dev/tier1/IConVar.h @@ -105,8 +105,8 @@ inline auto v_ConVar_Register = p_ConVar_Register.RCast(); +inline CMemory g_pConVarVBTable; inline CMemory g_pConVarVFTable; -inline CMemory g_pIConVarVFTable; /////////////////////////////////////////////////////////////////////////////// void ConVar_PrintDescription(ConCommandBase* pVar); @@ -116,7 +116,7 @@ class VConVar : public IDetour { virtual void GetAdr(void) const { - LogConAdr("IConVar::`vftable'", g_pIConVarVFTable.GetPtr()); + LogConAdr("ConVar::`vbtable'", g_pConVarVBTable.GetPtr()); LogConAdr("ConVar::`vftable'", g_pConVarVFTable.GetPtr()); LogFunAdr("ConVar::IsFlagSet", p_ConVar_IsFlagSet.GetPtr()); LogFunAdr("ConVar::Register", p_ConVar_Register.GetPtr()); @@ -139,8 +139,8 @@ class VConVar : public IDetour virtual void GetVar(void) const { } virtual void GetCon(void) const { - g_pConVarVFTable = g_GameDll.GetVirtualMethodTable(".?AVConVar@@", 0); - g_pIConVarVFTable = g_GameDll.GetVirtualMethodTable(".?AVConVar@@", 1); + g_pConVarVBTable = g_GameDll.GetVirtualMethodTable(".?AVConVar@@", 0); + g_pConVarVFTable = g_GameDll.GetVirtualMethodTable(".?AVConVar@@", 1); } virtual void Attach(void) const; virtual void Detach(void) const; diff --git a/r5dev/tier1/cmd.cpp b/r5dev/tier1/cmd.cpp index 81aecb9b..9ebbe56e 100644 --- a/r5dev/tier1/cmd.cpp +++ b/r5dev/tier1/cmd.cpp @@ -536,7 +536,7 @@ bool ConCommand::IsCommand(void) const //----------------------------------------------------------------------------- bool ConCommandBase::IsCommand(void) const { - return m_pConCommandBaseVFTable != g_pConVarVFTable.RCast(); + return m_pConCommandBaseVFTable != g_pConVarVBTable.RCast(); } //-----------------------------------------------------------------------------