diff --git a/reactos/subsystems/mvdm/ntvdm/bios/umamgr.c b/reactos/subsystems/mvdm/ntvdm/bios/umamgr.c index 258b9eafa38..9f236932c9e 100644 --- a/reactos/subsystems/mvdm/ntvdm/bios/umamgr.c +++ b/reactos/subsystems/mvdm/ntvdm/bios/umamgr.c @@ -91,11 +91,11 @@ BOOLEAN UmaDescReserve(IN OUT PUSHORT Segment, IN OUT PUSHORT Size) // FIXME: Check! What to do? if (RequestSize == 0) DPRINT1("Requesting UMA descriptor with null size?!\n"); - for (Entry = UmaDescriptorList.Flink; - Entry != &UmaDescriptorList; - Entry = Entry->Flink) + Entry = UmaDescriptorList.Flink; + while (Entry != &UmaDescriptorList) { UmaDesc = (PUMA_DESCRIPTOR)CONTAINING_RECORD(Entry, UMA_DESCRIPTOR, Entry); + Entry = Entry->Flink; /* Only check free descriptors */ if (UmaDesc->Type != UMA_FREE) continue; @@ -209,11 +209,11 @@ BOOLEAN UmaDescRelease(IN USHORT Segment) PUMA_DESCRIPTOR UmaDesc, PrevDesc = NULL, NextDesc = NULL; PUMA_DESCRIPTOR FoundUmaDesc = NULL; - for (Entry = UmaDescriptorList.Flink; - Entry != &UmaDescriptorList; - Entry = Entry->Flink) + Entry = UmaDescriptorList.Flink; + while (Entry != &UmaDescriptorList) { UmaDesc = (PUMA_DESCRIPTOR)CONTAINING_RECORD(Entry, UMA_DESCRIPTOR, Entry); + Entry = Entry->Flink; /* Search for the descriptor in the list */ if (UmaDesc->Start == Address && UmaDesc->Type == UMA_UMB) @@ -267,11 +267,11 @@ BOOLEAN UmaDescReallocate(IN USHORT Segment, IN OUT PUSHORT Size) // FIXME: Check! What to do? if (RequestSize == 0) DPRINT1("Resizing UMA descriptor %04X to null size?!\n", Segment); - for (Entry = UmaDescriptorList.Flink; - Entry != &UmaDescriptorList; - Entry = Entry->Flink) + Entry = UmaDescriptorList.Flink; + while (Entry != &UmaDescriptorList) { UmaDesc = (PUMA_DESCRIPTOR)CONTAINING_RECORD(Entry, UMA_DESCRIPTOR, Entry); + Entry = Entry->Flink; /* Only get the maximum size of free descriptors */ if (UmaDesc->Type == UMA_FREE) diff --git a/reactos/subsystems/mvdm/ntvdm/clock.c b/reactos/subsystems/mvdm/ntvdm/clock.c index 0250ea8bac8..54096dfa92f 100644 --- a/reactos/subsystems/mvdm/ntvdm/clock.c +++ b/reactos/subsystems/mvdm/ntvdm/clock.c @@ -65,6 +65,7 @@ VOID ClockUpdate(VOID) extern BOOLEAN CpuRunning; UINT i; PLIST_ENTRY Entry; + PHARDWARE_TIMER Timer; while (VdmRunning && CpuRunning) { @@ -81,10 +82,13 @@ VOID ClockUpdate(VOID) ++Cycles; } - for (Entry = Timers.Flink; Entry != &Timers; Entry = Entry->Flink) + Entry = Timers.Flink; + while (Entry != &Timers) { ULONGLONG Ticks = (ULONGLONG)-1; - PHARDWARE_TIMER Timer = CONTAINING_RECORD(Entry, HARDWARE_TIMER, Link); + + Timer = CONTAINING_RECORD(Entry, HARDWARE_TIMER, Link); + Entry = Entry->Flink; ASSERT((Timer->EnableCount > 0) && (Timer->Flags & HARDWARE_TIMER_ENABLED)); @@ -128,12 +132,13 @@ PHARDWARE_TIMER CreateHardwareTimer(ULONG Flags, ULONGLONG Delay, PHARDWARE_TIME { PHARDWARE_TIMER Timer; - Timer = RtlAllocateHeap(RtlGetProcessHeap(), 0, sizeof(*Timer)); + Timer = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*Timer)); if (Timer == NULL) return NULL; Timer->Flags = Flags & ~HARDWARE_TIMER_ENABLED; Timer->EnableCount = 0; Timer->Callback = Callback; + Timer->LastTick.QuadPart = 0; SetHardwareTimerDelay(Timer, Delay); if (Flags & HARDWARE_TIMER_ENABLED) EnableHardwareTimer(Timer); diff --git a/reactos/subsystems/mvdm/ntvdm/clock.h b/reactos/subsystems/mvdm/ntvdm/clock.h index bc0c3bd5d68..9584628b688 100644 --- a/reactos/subsystems/mvdm/ntvdm/clock.h +++ b/reactos/subsystems/mvdm/ntvdm/clock.h @@ -27,8 +27,8 @@ typedef struct _HARDWARE_TIMER ULONG Flags; LONG EnableCount; ULONGLONG Delay; - PHARDWARE_TIMER_PROC Callback; LARGE_INTEGER LastTick; + PHARDWARE_TIMER_PROC Callback; } HARDWARE_TIMER, *PHARDWARE_TIMER; /* FUNCTIONS ******************************************************************/