diff --git a/sourcehook/sourcehook.cpp b/sourcehook/sourcehook.cpp index d9f6731..2f4aa30 100644 --- a/sourcehook/sourcehook.cpp +++ b/sourcehook/sourcehook.cpp @@ -96,7 +96,7 @@ namespace SourceHook { if (p1->paramsPassInfo[i].type != p2->paramsPassInfo[i].type) return false; - if (p1->paramsPassInfo[i].flags != p2->paramsPassInfo[i].flags) + if (GetRealFlags(p1->paramsPassInfo[i]) != GetRealFlags(p2->paramsPassInfo[i])) return false; } } diff --git a/sourcehook/sourcehook_impl_cproto.h b/sourcehook/sourcehook_impl_cproto.h index a3b32d7..347ffd4 100644 --- a/sourcehook/sourcehook_impl_cproto.h +++ b/sourcehook/sourcehook_impl_cproto.h @@ -70,9 +70,15 @@ namespace SourceHook return m_Proto; } + // For old sourcehook.h: flags 0 -> assume ByVal + static unsigned int GetRealFlags(const PassInfo &info) + { + return (info.flags == 0) ? PassInfo::PassFlag_ByVal : info.flags; + } + static size_t GetRealSize(const PassInfo &info) { - if (info.flags & PassInfo::PassFlag_ByRef) + if (GetRealFlags(info) & PassInfo::PassFlag_ByRef) { return sizeof(void*); }