--- wine-a/libs/wine/mmap.c.old 2005-06-20 13:43:47.000000000 +0200 +++ wine-b/libs/wine/mmap.c 2005-10-14 21:49:54.794346832 +0200 @@ -161,6 +161,26 @@ #endif /* (__svr4__ || __NetBSD__) && !MAP_TRYFIXED */ +static void *get_anon_mmap_null_address(size_t size) +{ + static int got_override = 0; + static void *low_alloc_ptr = NULL; + void * current_low_alloc_ptr; + + if (!got_override) + { + low_alloc_ptr = (void*)0x10000000; + got_override = 1; + //printf("gaak!\n"); + } + + current_low_alloc_ptr = low_alloc_ptr; + + if (low_alloc_ptr) + low_alloc_ptr += size; + + return current_low_alloc_ptr; + } /*********************************************************************** * wine_anon_mmap @@ -209,6 +229,9 @@ return start; #endif } + if ((start == NULL) && !(flags & MAP_FIXED)) + start = get_anon_mmap_null_address(size); + return mmap( start, size, prot, flags, fdzero, 0 ); #else return (void *)-1; --- wine-a/loader/preloader.c.old 2005-06-02 12:30:08.000000000 +0200 +++ wine-b/loader/preloader.c 2005-10-14 21:51:16.529921136 +0200 @@ -110,7 +110,7 @@ { { (void *)0x00000000, 0x00110000 }, /* DOS area */ { (void *)0x7ffe0000, 0x01020000 }, /* shared user data + shared heap */ - { (void *)0x00110000, 0x1fef0000 }, /* PE exe range (may be set with WINEPRELOADRESERVE), defaults to 512mb */ + { (void *)0x10000000, 0x00f00000 }, /* PE exe range (may be set with WINEPRELOADRESERVE), defaults to 512mb */ { 0, 0 } /* end of list */ };