Add nullptr check for listimages
This commit is contained in:
parent
088b8ac045
commit
675a1145a8
@ -397,18 +397,16 @@ namespace Components
|
|||||||
{
|
{
|
||||||
// execute our hook
|
// execute our hook
|
||||||
pushad
|
pushad
|
||||||
|
|
||||||
call Script::StoreScriptBaseProgramNum
|
call Script::StoreScriptBaseProgramNum
|
||||||
|
|
||||||
popad
|
popad
|
||||||
|
|
||||||
// execute overwritten code caused by the jump hook
|
// execute overwritten code caused by the jump hook
|
||||||
sub eax, ds:201A460h // gScrVarPub_programBuffer
|
sub eax, ds:201A460h // gScrVarPub_programBuffer
|
||||||
add esp, 0Ch
|
add esp, 0Ch
|
||||||
mov ds : 1CFEEF8h, eax // gScrCompilePub_programLen
|
mov ds:1CFEEF8h, eax // gScrCompilePub_programLen
|
||||||
|
|
||||||
// jump back to the original code
|
// jump back to the original code
|
||||||
push 426C3Bh
|
push 426C3Bh
|
||||||
retn
|
retn
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -203,7 +203,7 @@ namespace Components
|
|||||||
}
|
}
|
||||||
|
|
||||||
void QuickPatch::CL_KeyEvent_OnEscape()
|
void QuickPatch::CL_KeyEvent_OnEscape()
|
||||||
{
|
{
|
||||||
if (Game::Con_CancelAutoComplete())
|
if (Game::Con_CancelAutoComplete())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -212,11 +212,11 @@ namespace Components
|
|||||||
|
|
||||||
// Close console
|
// Close console
|
||||||
Game::Key_RemoveCatcher(0, ~Game::KEYCATCH_CONSOLE);
|
Game::Key_RemoveCatcher(0, ~Game::KEYCATCH_CONSOLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
__declspec(naked) void QuickPatch::CL_KeyEvent_ConsoleEscape_Stub()
|
__declspec(naked) void QuickPatch::CL_KeyEvent_ConsoleEscape_Stub()
|
||||||
{
|
{
|
||||||
__asm
|
__asm
|
||||||
{
|
{
|
||||||
pushad
|
pushad
|
||||||
call CL_KeyEvent_OnEscape
|
call CL_KeyEvent_OnEscape
|
||||||
@ -228,6 +228,18 @@ namespace Components
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QuickPatch::R_AddImageToList_Hk(Game::XAssetHeader header, void* data)
|
||||||
|
{
|
||||||
|
auto* imageList = static_cast<Game::ImageList*>(data);
|
||||||
|
|
||||||
|
assert(imageList->count < ARRAY_SIZE(imageList->image));
|
||||||
|
|
||||||
|
if (header.image->texture.basemap)
|
||||||
|
{
|
||||||
|
imageList->image[imageList->count++] = header.image;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Game::dvar_t* QuickPatch::Dvar_RegisterConMinicon(const char* dvarName, [[maybe_unused]] bool value, unsigned __int16 flags, const char* description)
|
Game::dvar_t* QuickPatch::Dvar_RegisterConMinicon(const char* dvarName, [[maybe_unused]] bool value, unsigned __int16 flags, const char* description)
|
||||||
{
|
{
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
@ -262,6 +274,8 @@ namespace Components
|
|||||||
|
|
||||||
Utils::Hook(0x4FA448, QuickPatch::Dvar_RegisterConMinicon, HOOK_CALL).install()->quick();
|
Utils::Hook(0x4FA448, QuickPatch::Dvar_RegisterConMinicon, HOOK_CALL).install()->quick();
|
||||||
|
|
||||||
|
Utils::Hook::Set<void(*)(Game::XAssetHeader, void*)>(0x51FCDD, R_AddImageToList_Hk);
|
||||||
|
|
||||||
// protocol version (workaround for hacks)
|
// protocol version (workaround for hacks)
|
||||||
Utils::Hook::Set<int>(0x4FB501, PROTOCOL);
|
Utils::Hook::Set<int>(0x4FB501, PROTOCOL);
|
||||||
|
|
||||||
@ -349,7 +363,7 @@ namespace Components
|
|||||||
// spawn upnp thread when UPNP_init returns
|
// spawn upnp thread when UPNP_init returns
|
||||||
Utils::Hook::Hook(0x47982B, []()
|
Utils::Hook::Hook(0x47982B, []()
|
||||||
{
|
{
|
||||||
std::thread([]()
|
std::thread([]
|
||||||
{
|
{
|
||||||
// check natpmpstate
|
// check natpmpstate
|
||||||
// state 4 is no more devices to query
|
// state 4 is no more devices to query
|
||||||
@ -440,11 +454,11 @@ namespace Components
|
|||||||
Utils::Hook::Set<const char*>(0x60BBD4, CLIENT_CONFIG);
|
Utils::Hook::Set<const char*>(0x60BBD4, CLIENT_CONFIG);
|
||||||
|
|
||||||
// Disable profile system
|
// Disable profile system
|
||||||
// Utils::Hook::Nop(0x60BEB1, 5); // GamerProfile_InitAllProfiles - Causes an error, when calling a harrier killstreak.
|
// Utils::Hook::Nop(0x60BEB1, 5); // GamerProfile_InitAllProfiles - Causes an error, when calling a harrier killstreak.
|
||||||
// Utils::Hook::Nop(0x60BEB8, 5); // GamerProfile_LogInProfile
|
// Utils::Hook::Nop(0x60BEB8, 5); // GamerProfile_LogInProfile
|
||||||
// Utils::Hook::Nop(0x4059EA, 5); // GamerProfile_RegisterCommands
|
// Utils::Hook::Nop(0x4059EA, 5); // GamerProfile_RegisterCommands
|
||||||
Utils::Hook::Nop(0x4059EF, 5); // GamerProfile_RegisterDvars
|
Utils::Hook::Nop(0x4059EF, 5); // GamerProfile_RegisterDvars
|
||||||
Utils::Hook::Nop(0x47DF9A, 5); // GamerProfile_UpdateSystemDvars
|
Utils::Hook::Nop(0x47DF9A, 5); // GamerProfile_UpdateSystemDvars
|
||||||
Utils::Hook::Set<BYTE>(0x5AF0D0, 0xC3); // GamerProfile_SaveProfile
|
Utils::Hook::Set<BYTE>(0x5AF0D0, 0xC3); // GamerProfile_SaveProfile
|
||||||
Utils::Hook::Set<BYTE>(0x4E6870, 0xC3); // GamerProfile_UpdateSystemVarsFromProfile
|
Utils::Hook::Set<BYTE>(0x4E6870, 0xC3); // GamerProfile_UpdateSystemVarsFromProfile
|
||||||
Utils::Hook::Set<BYTE>(0x4C37F0, 0xC3); // GamerProfile_UpdateProfileAndSaveIfNeeded
|
Utils::Hook::Set<BYTE>(0x4C37F0, 0xC3); // GamerProfile_UpdateProfileAndSaveIfNeeded
|
||||||
|
@ -28,6 +28,8 @@ namespace Components
|
|||||||
static void CL_KeyEvent_OnEscape();
|
static void CL_KeyEvent_OnEscape();
|
||||||
static void CL_KeyEvent_ConsoleEscape_Stub();
|
static void CL_KeyEvent_ConsoleEscape_Stub();
|
||||||
|
|
||||||
|
static void R_AddImageToList_Hk(Game::XAssetHeader header, void* data);
|
||||||
|
|
||||||
static Game::dvar_t* Dvar_RegisterConMinicon(const char* dvarName, bool value, unsigned __int16 flags, const char* description);
|
static Game::dvar_t* Dvar_RegisterConMinicon(const char* dvarName, bool value, unsigned __int16 flags, const char* description);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -8787,6 +8787,12 @@ namespace Game
|
|||||||
LOCMSG_NOERR = 0x1,
|
LOCMSG_NOERR = 0x1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct ImageList
|
||||||
|
{
|
||||||
|
unsigned int count;
|
||||||
|
GfxImage* image[8192];
|
||||||
|
};
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
#ifndef IDA
|
#ifndef IDA
|
||||||
|
Loading…
Reference in New Issue
Block a user