1
0
mirror of https://github.com/alliedmodders/metamod-source.git synced 2025-02-20 13:54:14 +01:00

Fixed potential crashbug in SH_MCALL on GCC

--HG--
extra : convert_revision : svn%3Ac2935e3e-5518-0410-8daf-afa5dab7d4e3/trunk%40554
This commit is contained in:
Pavol Marko 2007-11-10 11:01:42 +00:00
parent edc9d1b581
commit 4ce4e008cc
3 changed files with 6 additions and 0 deletions

View File

@ -852,6 +852,8 @@ SourceHook::CallClass<T> *SH_GET_CALLCLASS(T *p)
*reinterpret_cast<void***>( (reinterpret_cast<char*>(ptr) + SH_MFHCls(hookname)::ms_MFI.thisptroffs + SH_MFHCls(hookname)::ms_MFI.vtbloffs) ) + SH_MFHCls(hookname)::ms_MFI.vtblindex); \
/* patch mfp */ \
*reinterpret_cast<void**>(&mfp) = *reinterpret_cast<void**>(vfnptr); \
if (sizeof(mfp) == 2*sizeof(void*)) /* gcc */ \
*(reinterpret_cast<void**>(&mfp) + 1) = 0; \
return SH_MFHCls(hookname)::CallEC(reinterpret_cast< ::SourceHook::EmptyClass* >(ptr), mfp, vfnptr, SH_GLOB_SHPTR); \
} \
void __SourceHook_FHM_Reconfigure##hookname(int p_vtblindex, int p_vtbloffs, int p_thisptroffs) \

View File

@ -852,6 +852,8 @@ SourceHook::CallClass<T> *SH_GET_CALLCLASS(T *p)
*reinterpret_cast<void***>( (reinterpret_cast<char*>(ptr) + SH_MFHCls(hookname)::ms_MFI.thisptroffs + SH_MFHCls(hookname)::ms_MFI.vtbloffs) ) + SH_MFHCls(hookname)::ms_MFI.vtblindex); \
/* patch mfp */ \
*reinterpret_cast<void**>(&mfp) = *reinterpret_cast<void**>(vfnptr); \
if (sizeof(mfp) == 2*sizeof(void*)) /* gcc */ \
*(reinterpret_cast<void**>(&mfp) + 1) = 0; \
return SH_MFHCls(hookname)::CallEC(reinterpret_cast< ::SourceHook::EmptyClass* >(ptr), mfp, vfnptr, SH_GLOB_SHPTR); \
} \
void __SourceHook_FHM_Reconfigure##hookname(int p_vtblindex, int p_vtbloffs, int p_thisptroffs) \

View File

@ -852,6 +852,8 @@ SourceHook::CallClass<T> *SH_GET_CALLCLASS(T *p)
*reinterpret_cast<void***>( (reinterpret_cast<char*>(ptr) + SH_MFHCls(hookname)::ms_MFI.thisptroffs + SH_MFHCls(hookname)::ms_MFI.vtbloffs) ) + SH_MFHCls(hookname)::ms_MFI.vtblindex); \
/* patch mfp */ \
*reinterpret_cast<void**>(&mfp) = *reinterpret_cast<void**>(vfnptr); \
if (sizeof(mfp) == 2*sizeof(void*)) /* gcc */ \
*(reinterpret_cast<void**>(&mfp) + 1) = 0; \
return SH_MFHCls(hookname)::CallEC(reinterpret_cast< ::SourceHook::EmptyClass* >(ptr), mfp, vfnptr, SH_GLOB_SHPTR); \
} \
void __SourceHook_FHM_Reconfigure##hookname(int p_vtblindex, int p_vtbloffs, int p_thisptroffs) \