--- wine/libs/wine/mmap.c.orig	2006-01-27 04:58:28.000000000 -0900
+++ wine/libs/wine/mmap.c	2006-01-27 05:00:46.000000000 -0900
@@ -164,7 +164,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;
+    }
 
+    current_low_alloc_ptr = low_alloc_ptr;
+
+    if (low_alloc_ptr)
+        low_alloc_ptr += size;
+
+    return current_low_alloc_ptr;
+   }
+ 
 /***********************************************************************
  *		wine_anon_mmap
  *
@@ -212,6 +231,8 @@
             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;
