Module: wine Branch: master Commit: c10bdbefd69786846b035d1c38de3052bed67875 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c10bdbefd69786846b035d1c38...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Aug 5 11:23:02 2009 +0200
ntdll: Don't free low address space for large address aware applications.
Many games set the LARGE_ADDRESS_AWARE flag but don't pass the appropriate flags to d3dx9 to make it cope with it.
---
dlls/ntdll/virtual.c | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c index 04c90f6..62176e4 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -1681,12 +1681,6 @@ void virtual_release_address_space( BOOL free_high_mem )
server_enter_uninterrupted_section( &csVirtual, &sigset );
-#ifndef __APPLE__ /* dyld doesn't support parts of the WINE_DOS segment being unmapped */ - range.base = (char *)0x20000000; - range.limit = (char *)0x7f000000; - while (wine_mmap_enum_reserved_areas( free_reserved_memory, &range, 0 )) /* nothing */; -#endif - /* no large address space on win9x */ if (free_high_mem && NtCurrentTeb()->Peb->OSPlatformId == VER_PLATFORM_WIN32_NT) { @@ -1695,6 +1689,15 @@ void virtual_release_address_space( BOOL free_high_mem ) while (wine_mmap_enum_reserved_areas( free_reserved_memory, &range, 1 )) /* nothing */; user_space_limit = working_set_limit = address_space_limit; } + else + { +#ifndef __APPLE__ /* dyld doesn't support parts of the WINE_DOS segment being unmapped */ + range.base = (char *)0x20000000; + range.limit = (char *)0x7f000000; + while (wine_mmap_enum_reserved_areas( free_reserved_memory, &range, 0 )) /* nothing */; +#endif + } + server_leave_uninterrupted_section( &csVirtual, &sigset ); #endif }