And another one.
This seems to be the problem with the Unload bug which people are asking about.
Quote:
server.dll!SourceHook::CSourceHookImpl::CProt o::Equal(const char * p1=0x0e4711d0, const char * p2=0x0e5b5104) Line 1043 C++
server.dll!SourceHook::List<SourceHook::CSour ceHookImpl::CHookManagerContainer>::find<Sour ceHook::CSourceHookImpl::CHookManagerContaine r::HMCI>(const SourceHook::CSourceHookImpl::CHookManagerCont ainer::HMCI & equ={...}) Line 275 C++
server.dll!SourceHook::CSourceHookImpl::Remov eHook(int plug=2, void * iface=0x2243de50, int thisptr_offs=0, int (SourceHook::HookManagerAction, SourceHook::IHookManagerInfo *)* myHookMan=0x0e5a2c10, SourceHook::ISHDelegate * handler=0x0012e360, bool post=true) Line 396 C++
>
projectx_mm.dll!ProjectXPlugin::Unload(char * error=0x0012e3b4, unsigned int maxlen=127) Line 637 C++
|
Thats the call stack.
My line 637 is.
Code:
SH_REMOVE_HOOK_MEMFUNC(IServerGameDLL, GameFrame, m_ServerDll, &g_ProjectXPlugin, &ProjectXPlugin::GameFrame, true);
sourcehook.cpp: 1043 is..
Code:
if (*p1 && *p2) // Case1: Both old
MSVC is saying p1 is a bad pointer.
And I am implementing the proper unhooking method for the CBaseEntity function too.
I hook in ClientPutInServer and UnHook in ClientDisconnect, and also unhook all valid pointers which were previously hooked in LevelShutDown seeing as their CBaseEntity pointer changes on map change and ClientPutInServer is being called on new maps.
Correct me if im wrong.....
__________________