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;
}
Show replies by date