Create the system heap event before the shared mapping to avoid a race
condition.

diff --git a/dlls/kernel/heap.c b/dlls/kernel/heap.c
index f16abde..04637b6 100644
--- a/dlls/kernel/heap.c
+++ b/dlls/kernel/heap.c
@@ -85,8 +85,9 @@
     int created;
     void *base;
     HANDLE map, event;
-    UNICODE_STRING event_name;
-    OBJECT_ATTRIBUTES event_attr;
+
+    /* create the system heap event first */
+    event = CreateEventA( NULL, TRUE, FALSE, "__SystemHeapEvent" );
 
     if (!(map = CreateFileMappingA( INVALID_HANDLE_VALUE, NULL, SEC_COMMIT | PAGE_READWRITE,
                                     0, SYSTEM_HEAP_SIZE, "__SystemHeap" ))) return 0;
@@ -99,21 +100,11 @@
         return 0;
     }
 
-    /* create the system heap event */
-    RtlCreateUnicodeStringFromAsciiz( &event_name, "__SystemHeapEvent" );
-    event_attr.Length = sizeof(event_attr);
-    event_attr.RootDirectory = 0;
-    event_attr.ObjectName = &event_name;
-    event_attr.Attributes = 0;
-    event_attr.SecurityDescriptor = NULL;
-    event_attr.SecurityQualityOfService = NULL;
-    NtCreateEvent( &event, EVENT_ALL_ACCESS, &event_attr, TRUE, FALSE );
-
     if (created)  /* newly created heap */
     {
         systemHeap = RtlCreateHeap( HEAP_SHARED, base, SYSTEM_HEAP_SIZE,
                                     SYSTEM_HEAP_SIZE, NULL, NULL );
-        NtSetEvent( event, NULL );
+        SetEvent( event );
     }
     else
     {