Fix silly bugs in Critical section code. Thanks to Gunnar for finding one of them, thanks to mifritscher for finding the actual regression, and thanks to Filip for being understanding :P
Modified: trunk/reactos/include/ntdll/rtl.h
Modified: trunk/reactos/lib/ntdll/rtl/critical.c

Modified: trunk/reactos/include/ntdll/rtl.h
--- trunk/reactos/include/ntdll/rtl.h	2005-01-03 23:35:02 UTC (rev 12771)
+++ trunk/reactos/include/ntdll/rtl.h	2005-01-04 00:10:50 UTC (rev 12772)
@@ -99,7 +99,6 @@
   LIST_ENTRY ProcessLocksList;
   ULONG EntryCount;
   ULONG ContentionCount;
-  PVOID OwnerBackTrace[2];
   PVOID Spare[2];
 } CRITICAL_SECTION_DEBUG, *PCRITICAL_SECTION_DEBUG;
 

Modified: trunk/reactos/lib/ntdll/rtl/critical.c
--- trunk/reactos/lib/ntdll/rtl/critical.c	2005-01-03 23:35:02 UTC (rev 12771)
+++ trunk/reactos/lib/ntdll/rtl/critical.c	2005-01-04 00:10:50 UTC (rev 12772)
@@ -16,7 +16,7 @@
 #include <ntdll/rtl.h>
 #include <ntos/synch.h>
 
-#define NDEBUG
+//#define NDEBUG
 #include <ntdll/ntdll.h>
 
 /* FUNCTIONS *****************************************************************/
@@ -146,6 +146,7 @@
         }
         
         /* We don't own it, so we must wait for it */
+        DPRINT ("Waiting\n");
         RtlpWaitForCriticalSection(CriticalSection);
     }
     
@@ -486,14 +487,16 @@
     /* Chevk if we have an event */
     if (!hEvent) {
         
+        DPRINT ("Creating Event\n");
         /* No, so create it */
-        if (NT_SUCCESS(Status = NtCreateEvent(hNewEvent,
-                                              EVENT_ALL_ACCESS,
-                                              NULL,
-                                              SynchronizationEvent,
-                                              FALSE))) {
+        if (!NT_SUCCESS(Status = NtCreateEvent(&hNewEvent,
+                                               EVENT_ALL_ACCESS,
+                                               NULL,
+                                               SynchronizationEvent,
+                                               FALSE))) {
                 
                 /* We failed, this is bad... */
+                DPRINT1("Failed to Create Event!\n");
                 InterlockedDecrement(&CriticalSection->LockCount);
                 RtlRaiseStatus(Status);
                 return;
@@ -508,11 +511,13 @@
         } else {
         
             /* Some just created an event */
+            DPRINT("Closing already created event!\n");
             NtClose(hNewEvent);
         }
         
         /* Set either the new or the old */
         CriticalSection->LockSemaphore = hEvent;
+        DPRINT("Event set!\n");
     }
     
     return;