1.1 --- a/extensions/sdktools/vglobals.cpp Mon Apr 04 13:37:29 2011 -0400
1.2 +++ b/extensions/sdktools/vglobals.cpp Mon Apr 04 13:44:19 2011 -0400
1.3 @@ -39,29 +39,28 @@
1.4 {
1.5 g_EntList = gamehelpers->GetGlobalEntityList();
1.6
1.7 - char *addr;
1.8 + /*
1.9 + * g_pGameRules
1.10 + *
1.11 + * First try to lookup pointer directly for platforms with symbols.
1.12 + * If symbols aren't present (Windows or stripped Linux/Mac),
1.13 + * attempt find via CreateGameRulesObject + offset
1.14 + */
1.15
1.16 -#ifdef PLATFORM_WINDOWS
1.17 - /* g_pGameRules */
1.18 - if (!g_pGameConf->GetMemSig("CreateGameRulesObject", (void **)&addr) || !addr)
1.19 - {
1.20 - return;
1.21 - }
1.22 -
1.23 - int offset;
1.24 - if (!g_pGameConf->GetOffset("g_pGameRules", &offset) || !offset)
1.25 + char *addr;
1.26 + if (g_pGameConf->GetMemSig("g_pGameRules", (void **)&addr) && addr)
1.27 {
1.28 - return;
1.29 + g_pGameRules = reinterpret_cast<void **>(addr);
1.30 }
1.31 - g_pGameRules = *reinterpret_cast<void ***>(addr + offset);
1.32 -#elif defined PLATFORM_LINUX || defined PLATFORM_APPLE
1.33 - /* g_pGameRules */
1.34 - if (!g_pGameConf->GetMemSig("g_pGameRules", (void **)&addr) || !addr)
1.35 + else if (g_pGameConf->GetMemSig("CreateGameRulesObject", (void **)&addr) && addr)
1.36 {
1.37 - return;
1.38 + int offset;
1.39 + if (!g_pGameConf->GetOffset("g_pGameRules", &offset) || !offset)
1.40 + {
1.41 + return;
1.42 + }
1.43 + g_pGameRules = *reinterpret_cast<void ***>(addr + offset);
1.44 }
1.45 - g_pGameRules = reinterpret_cast<void **>(addr);
1.46 -#endif
1.47 }
1.48
1.49 size_t UTIL_StringToSignature(const char *str, char buffer[], size_t maxlength)