diff --git a/rts/win32/OSMem.c b/rts/win32/OSMem.c --- a/rts/win32/OSMem.c +++ b/rts/win32/OSMem.c @@ -41,7 +41,7 @@ static block_rec* free_blocks = NULL; typedef LPVOID(WINAPI *VirtualAllocExNumaProc)(HANDLE, LPVOID, SIZE_T, DWORD, DWORD, DWORD); /* Cache NUMA API call. */ -VirtualAllocExNumaProc VirtualAllocExNuma; +VirtualAllocExNumaProc _VirtualAllocExNuma; void osMemInit(void) @@ -52,8 +52,8 @@ osMemInit(void) /* Resolve and cache VirtualAllocExNuma. */ if (osNumaAvailable() && RtsFlags.GcFlags.numa) { - VirtualAllocExNuma = (VirtualAllocExNumaProc)GetProcAddress(GetModuleHandleW(L"kernel32"), "VirtualAllocExNuma"); - if (!VirtualAllocExNuma) + _VirtualAllocExNuma = (VirtualAllocExNumaProc)(void*)GetProcAddress(GetModuleHandleW(L"kernel32"), "VirtualAllocExNuma"); + if (!_VirtualAllocExNuma) { sysErrorBelch( "osBindMBlocksToNode: VirtualAllocExNuma does not exist. How did you get this far?"); @@ -569,7 +569,7 @@ void osBindMBlocksToNode( On windows also -xb is broken, it does nothing so that can't be used to tweak it (see #12577). So for now, just let the OS decide. */ - temp = VirtualAllocExNuma( + temp = _VirtualAllocExNuma( GetCurrentProcess(), NULL, // addr? See base memory size,