Support anon shared mappings using temporary files (wont be deleted
yet).

diff --git a/memory/virtual.c b/memory/virtual.c
index 95a560e..3242160 100644
--- a/memory/virtual.c
+++ b/memory/virtual.c
@@ -1133,15 +1133,29 @@
 
     if (hFile == INVALID_HANDLE_VALUE32)
     {
-    	FIXME(virtual,"shared anon mapping not correctly supported!\n");
-        if (!size_high && !size_low)
-        {
-            SetLastError( ERROR_INVALID_PARAMETER );
-            return 0;
-        }
-        obj = NULL;
+	FIXME(virtual,"shared anon mapping (%s, size %d) not correctly supported!\n",debugstr_a(name),size_low);
+	if (!size_high && !size_low)
+	{
+	    SetLastError( ERROR_INVALID_PARAMETER );
+	    return 0;
+	}
+	obj = NULL;
+        if (name)
+	{
+	    CHAR	buf[260];
+
+	    GetTempPath32A(260,buf);
+	    GetTempFileName32A(buf,"wine",260,buf);
+	    hFile = CreateFile32A(buf,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS,0,0);
+	    if (hFile == INVALID_HANDLE_VALUE32)
+	    	FIXME(virtual,"could not create temp. file for anon shared mapping: reason was 0x%08lx\n",GetLastError());
+	    else {
+                SetFilePointer(hFile,size_low,&size_high,FILE_BEGIN);
+	    	SetEndOfFile(hFile);
+	    }
+	}
     }
-    else  /* We have a file */
+    if (hFile != INVALID_HANDLE_VALUE32) /* We have a file */
     {
         BY_HANDLE_FILE_INFORMATION info;
         DWORD access = GENERIC_READ;