diff -urN wine-11.16-orig/dlls/ntdll/unix/virtual.c wine-11.16/dlls/ntdll/unix/virtual.c --- wine-11.16-orig/dlls/ntdll/unix/virtual.c 2026-08-22 05:25:07 +0900 +++ wine-11.16/dlls/ntdll/unix/virtual.c 2026-08-24 01:51:22 +0900 @@ -5090,6 +5090,14 @@ */ void virtual_set_large_address_space(void) { + const char *force_laa_str; + int force_laa; + int is_laa; + + force_laa_str = getenv("WINEFORCELARGEADDRESSAWARE"); + force_laa = (force_laa_str != NULL && *force_laa_str != '\0'); + is_laa = (force_laa || (main_image_info.ImageCharacteristics & IMAGE_FILE_LARGE_ADDRESS_AWARE)); + if (is_win64) { if (!is_wow64()) @@ -5101,7 +5109,7 @@ free_reserved_memory( 0, (char *)0x7ffe0000 ); #endif } - else if (main_image_info.ImageCharacteristics & IMAGE_FILE_LARGE_ADDRESS_AWARE) + else if (is_laa) { user_space_wow_limit = limit_4g - 1; /* reserve space for top-down allocations; some apps break if the entire high 2G is available */ @@ -5111,7 +5119,7 @@ } else { - if (!(main_image_info.ImageCharacteristics & IMAGE_FILE_LARGE_ADDRESS_AWARE)) return; + if (!is_laa) return; free_reserved_memory( (char *)0x80000000, address_space_limit ); } user_space_limit = working_set_limit = address_space_limit;