1.1 --- a/core/logic/GameConfigs.cpp Mon Aug 13 14:59:31 2012 -0400
1.2 +++ b/core/logic/GameConfigs.cpp Sun Oct 14 18:10:46 2012 -0400
1.3 @@ -525,9 +525,16 @@
1.4 s_TempSig.library,
1.5 m_CurFile);
1.6 } else {
1.7 -#if defined PLATFORM_POSIX
1.8 if (s_TempSig.sig[0] == '@')
1.9 {
1.10 +#if defined PLATFORM_WINDOWS
1.11 + MEMORY_BASIC_INFORMATION mem;
1.12 +
1.13 + if (VirtualQuery(addrInBase, &mem, sizeof(mem)))
1.14 + final_addr = g_MemUtils.ResolveSymbol(mem.AllocationBase, &s_TempSig.sig[1]);
1.15 + else
1.16 + smcore.LogError("[SM] Unable to find library \"%s\" in memory (gameconf \"%s\")", s_TempSig.library, m_File);
1.17 +#elif defined PLATFORM_POSIX
1.18 Dl_info info;
1.19 /* GNU only: returns 0 on error, inconsistent! >:[ */
1.20 if (dladdr(addrInBase, &info) != 0)
1.21 @@ -550,12 +557,12 @@
1.22 s_TempSig.library,
1.23 m_File);
1.24 }
1.25 +#endif
1.26 }
1.27 if (final_addr)
1.28 {
1.29 goto skip_find;
1.30 }
1.31 -#endif
1.32 /* First, preprocess the signature */
1.33 unsigned char real_sig[511];
1.34 size_t real_bytes;
1.35 @@ -572,9 +579,7 @@
1.36 }
1.37 }
1.38
1.39 -#if defined PLATFORM_POSIX
1.40 skip_find:
1.41 -#endif
1.42 m_Sigs.replace(m_offset, final_addr);
1.43 m_ParseState = PSTATE_GAMEDEFS_SIGNATURES;
1.44