use loops instead of gotos
Modified: trunk/reactos/lib/kernel32/synch/wait.c

Modified: trunk/reactos/lib/kernel32/synch/wait.c
--- trunk/reactos/lib/kernel32/synch/wait.c	2005-08-07 23:43:58 UTC (rev 17191)
+++ trunk/reactos/lib/kernel32/synch/wait.c	2005-08-08 00:45:04 UTC (rev 17192)
@@ -90,18 +90,21 @@
       Time.QuadPart = -10000 * (LONGLONG)dwMilliseconds;
       TimePtr = &Time;
     }
-WaitAgain:
-  Status = NtWaitForSingleObject(hHandle,
-				 (BOOLEAN) bAlertable,
-				 TimePtr);
 
-  if (HIWORD(Status))
+  do
     {
-      SetLastErrorByStatus (Status);
-      return WAIT_FAILED;
-    }
-  if (Status == STATUS_ALERTED && bAlertable) goto WaitAgain;
+      Status = NtWaitForSingleObject(hHandle,
+				     (BOOLEAN) bAlertable,
+				     TimePtr);
 
+      if (HIWORD(Status))
+        {
+          SetLastErrorByStatus (Status);
+          return WAIT_FAILED;
+        }
+
+    } while (Status == STATUS_ALERTED && bAlertable);
+
   return Status;
 }
 
@@ -211,19 +214,21 @@
       TimePtr = &Time;
     }
 
-WaitAgain:
-  Status = NtWaitForMultipleObjects (nCount,
-				     HandleBuffer,
-				     bWaitAll  ? WaitAll : WaitAny,
-				     (BOOLEAN)bAlertable,
-				     TimePtr);
-  if (HIWORD(Status))
+  do
     {
-      SetLastErrorByStatus (Status);
-      Status = WAIT_FAILED;
-    }
-  if (Status == STATUS_ALERTED && bAlertable) goto WaitAgain;
+      Status = NtWaitForMultipleObjects (nCount,
+				         HandleBuffer,
+				         bWaitAll  ? WaitAll : WaitAny,
+				         (BOOLEAN)bAlertable,
+				         TimePtr);
+      if (HIWORD(Status))
+        {
+          SetLastErrorByStatus (Status);
+          Status = WAIT_FAILED;
+        }
 
+    } while (Status == STATUS_ALERTED && bAlertable);
+
   if (HandleBuffer != Handle)
   {
       RtlFreeHeap(RtlGetProcessHeap(), 0, HandleBuffer);
@@ -283,18 +288,20 @@
       TimePtr = &Time;
     }
 
-WaitAgain:
-  Status = NtSignalAndWaitForSingleObject (hObjectToSignal,
-					   hObjectToWaitOn,
-					   (BOOLEAN)bAlertable,
-					   TimePtr);
-  if (!NT_SUCCESS(Status))
+  do
     {
-      SetLastErrorByStatus (Status);
-      return WAIT_FAILED;
-    }
-  if (Status == STATUS_ALERTED && bAlertable) goto WaitAgain;
+      Status = NtSignalAndWaitForSingleObject (hObjectToSignal,
+					       hObjectToWaitOn,
+					       (BOOLEAN)bAlertable,
+					       TimePtr);
+      if (!NT_SUCCESS(Status))
+        {
+          SetLastErrorByStatus (Status);
+          return WAIT_FAILED;
+        }
 
+    } while (Status == STATUS_ALERTED && bAlertable);
+
   /* STATUS_SUCCESS maps to WAIT_OBJECT_0 */
   return Status;
 }