mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Fix crash caused by CAppSystemGroup changes
* Moved 'm_pFileSystem' to 'CSourceAppSystemGroup' (actually belongs there, CAppSystemGroup has to be 0xA8 in size in order for 'm_bDedicated' to line up in 'CModAppSystemGroup'). * Prefixed all static functions with 'Static' to avoid name collisions.
This commit is contained in:
parent
122cd89aa9
commit
e3429705eb
@ -36,7 +36,7 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CSourceAppSystemGroup::PreInit(CSourceAppSystemGroup* pSourceAppSystemGroup)
|
||||
bool CSourceAppSystemGroup::StaticPreInit(CSourceAppSystemGroup* pSourceAppSystemGroup)
|
||||
{
|
||||
if (pSourceAppSystemGroup->GetCurrentStage() == CSourceAppSystemGroup::CREATION)
|
||||
{
|
||||
@ -53,7 +53,7 @@ bool CSourceAppSystemGroup::PreInit(CSourceAppSystemGroup* pSourceAppSystemGroup
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CSourceAppSystemGroup::Create(CSourceAppSystemGroup* pSourceAppSystemGroup)
|
||||
bool CSourceAppSystemGroup::StaticCreate(CSourceAppSystemGroup* pSourceAppSystemGroup)
|
||||
{
|
||||
return CSourceAppSystemGroup__Create(pSourceAppSystemGroup);
|
||||
}
|
||||
@ -61,7 +61,7 @@ bool CSourceAppSystemGroup::Create(CSourceAppSystemGroup* pSourceAppSystemGroup)
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
int CModAppSystemGroup::Main(CModAppSystemGroup* pModAppSystemGroup)
|
||||
int CModAppSystemGroup::StaticMain(CModAppSystemGroup* pModAppSystemGroup)
|
||||
{
|
||||
std::thread fixed(&CEngineSDK::FixedFrame, g_EngineSDK);
|
||||
fixed.detach();
|
||||
@ -90,7 +90,7 @@ int CModAppSystemGroup::Main(CModAppSystemGroup* pModAppSystemGroup)
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Instantiate all main libraries
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CModAppSystemGroup::Create(CModAppSystemGroup* pModAppSystemGroup)
|
||||
bool CModAppSystemGroup::StaticCreate(CModAppSystemGroup* pModAppSystemGroup)
|
||||
{
|
||||
#ifdef DEDICATED
|
||||
pModAppSystemGroup->SetServerOnly();
|
||||
|
@ -8,8 +8,11 @@
|
||||
class CSourceAppSystemGroup : public CAppSystemGroup
|
||||
{
|
||||
public:
|
||||
static bool PreInit(CSourceAppSystemGroup* pSourceAppSystemGroup);
|
||||
static bool Create(CSourceAppSystemGroup* pSourceAppSystemGroup);
|
||||
static bool StaticPreInit(CSourceAppSystemGroup* pSourceAppSystemGroup);
|
||||
static bool StaticCreate(CSourceAppSystemGroup* pSourceAppSystemGroup);
|
||||
|
||||
private:
|
||||
CFileSystem_Stdio* m_pFileSystem;
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
@ -18,8 +21,8 @@ public:
|
||||
class CModAppSystemGroup : public CAppSystemGroup
|
||||
{
|
||||
public:
|
||||
static int Main(CModAppSystemGroup* pModAppSystemGroup);
|
||||
static bool Create(CModAppSystemGroup* pModAppSystemGroup);
|
||||
static int StaticMain(CModAppSystemGroup* pModAppSystemGroup);
|
||||
static bool StaticCreate(CModAppSystemGroup* pModAppSystemGroup);
|
||||
static void InitPluginSystem(CModAppSystemGroup* pModAppSystemGroup);
|
||||
|
||||
bool IsServerOnly(void) const
|
||||
@ -88,19 +91,19 @@ class VApplication : public IDetour
|
||||
virtual void GetCon(void) const { }
|
||||
virtual void Attach(void) const
|
||||
{
|
||||
DetourAttach((LPVOID*)&CSourceAppSystemGroup__PreInit, &CSourceAppSystemGroup::PreInit);
|
||||
DetourAttach((LPVOID*)&CSourceAppSystemGroup__Create, &CSourceAppSystemGroup::Create);
|
||||
DetourAttach((LPVOID*)&CSourceAppSystemGroup__PreInit, &CSourceAppSystemGroup::StaticPreInit);
|
||||
DetourAttach((LPVOID*)&CSourceAppSystemGroup__Create, &CSourceAppSystemGroup::StaticCreate);
|
||||
|
||||
DetourAttach((LPVOID*)&CModAppSystemGroup_Main, &CModAppSystemGroup::Main);
|
||||
DetourAttach((LPVOID*)&CModAppSystemGroup_Create, &CModAppSystemGroup::Create);
|
||||
DetourAttach((LPVOID*)&CModAppSystemGroup_Main, &CModAppSystemGroup::StaticMain);
|
||||
DetourAttach((LPVOID*)&CModAppSystemGroup_Create, &CModAppSystemGroup::StaticCreate);
|
||||
}
|
||||
virtual void Detach(void) const
|
||||
{
|
||||
DetourDetach((LPVOID*)&CSourceAppSystemGroup__PreInit, &CSourceAppSystemGroup::PreInit);
|
||||
DetourDetach((LPVOID*)&CSourceAppSystemGroup__Create, &CSourceAppSystemGroup::Create);
|
||||
DetourDetach((LPVOID*)&CSourceAppSystemGroup__PreInit, &CSourceAppSystemGroup::StaticPreInit);
|
||||
DetourDetach((LPVOID*)&CSourceAppSystemGroup__Create, &CSourceAppSystemGroup::StaticCreate);
|
||||
|
||||
DetourDetach((LPVOID*)&CModAppSystemGroup_Main, &CModAppSystemGroup::Main);
|
||||
DetourDetach((LPVOID*)&CModAppSystemGroup_Create, &CModAppSystemGroup::Create);
|
||||
DetourDetach((LPVOID*)&CModAppSystemGroup_Main, &CModAppSystemGroup::StaticMain);
|
||||
DetourDetach((LPVOID*)&CModAppSystemGroup_Create, &CModAppSystemGroup::StaticCreate);
|
||||
}
|
||||
};
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -12,7 +12,7 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Initialize plugin system
|
||||
//-----------------------------------------------------------------------------
|
||||
void CAppSystemGroup::S_Destroy(CAppSystemGroup* pModAppSystemGroup)
|
||||
void CAppSystemGroup::StaticDestroy(CAppSystemGroup* pModAppSystemGroup)
|
||||
{
|
||||
CAppSystemGroup_Destroy(pModAppSystemGroup);
|
||||
}
|
||||
@ -27,9 +27,9 @@ CAppSystemGroup::AppSystemGroupStage_t CAppSystemGroup::GetCurrentStage() const
|
||||
|
||||
void VAppSystemGroup::Attach(void) const
|
||||
{
|
||||
DetourAttach(&CAppSystemGroup_Destroy, &CAppSystemGroup::S_Destroy);
|
||||
DetourAttach(&CAppSystemGroup_Destroy, &CAppSystemGroup::StaticDestroy);
|
||||
}
|
||||
void VAppSystemGroup::Detach(void) const
|
||||
{
|
||||
DetourDetach(&CAppSystemGroup_Destroy, &CAppSystemGroup::S_Destroy);
|
||||
DetourDetach(&CAppSystemGroup_Destroy, &CAppSystemGroup::StaticDestroy);
|
||||
}
|
@ -71,7 +71,7 @@ public:
|
||||
};
|
||||
|
||||
// Detour statics.
|
||||
static void S_Destroy(CAppSystemGroup* pAppSystemGroup);
|
||||
static void StaticDestroy(CAppSystemGroup* pAppSystemGroup);
|
||||
|
||||
// Returns the stage at which the app system group ran into an error
|
||||
AppSystemGroupStage_t GetCurrentStage() const;
|
||||
@ -90,8 +90,8 @@ protected:
|
||||
CUtlVector<CreateInterfaceFn> m_NonAppSystemFactories;
|
||||
char m_Pad[56]; // <-- unknown
|
||||
AppSystemGroupStage_t m_nCurrentStage;
|
||||
CFileSystem_Stdio* m_pFileSystem;
|
||||
};
|
||||
static_assert(sizeof(CAppSystemGroup) == 0xA8);
|
||||
|
||||
inline CMemory p_CAppSystemGroup_Destroy;
|
||||
inline auto CAppSystemGroup_Destroy = p_CAppSystemGroup_Destroy.RCast<void(*)(CAppSystemGroup* pAppSystemGroup)>();
|
||||
|
Loading…
x
Reference in New Issue
Block a user