Module: wine Branch: master Commit: c6b2bccfe7b9687ffb9bab165e6edefb3e51243e URL: https://gitlab.winehq.org/wine/wine/-/commit/c6b2bccfe7b9687ffb9bab165e6edef...
Author: Brendan Shanks bshanks@codeweavers.com Date: Mon Nov 13 16:17:56 2023 -0800
ntdll: Don't use sysconf(_SC_PHYS_PAGES) on macOS.
---
dlls/ntdll/unix/virtual.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c index 464f343a575..75e6319c007 100644 --- a/dlls/ntdll/unix/virtual.c +++ b/dlls/ntdll/unix/virtual.c @@ -3329,6 +3329,15 @@ void virtual_get_system_info( SYSTEM_BASIC_INFORMATION *info, BOOL wow64 ) ULONG64 total = (ULONG64)sinfo.totalram * sinfo.mem_unit; info->MmHighestPhysicalPage = max(1, total / page_size); } +#elif defined(__APPLE__) + /* sysconf(_SC_PHYS_PAGES) is buggy on macOS: in a 32-bit process, it + * returns an error on Macs with >4GB of RAM. + */ + INT64 memsize; + size_t len = sizeof(memsize); + + if (!sysctlbyname( "hw.memsize", &memsize, &len, NULL, 0 )) + info->MmHighestPhysicalPage = max(1, memsize / page_size); #elif defined(_SC_PHYS_PAGES) LONG64 phys_pages = sysconf( _SC_PHYS_PAGES );