Merge branch 'v2_develop' into copilot/move-fakedriver-to-terminal-drivers

This commit is contained in:
Tig
2025-10-26 21:18:21 -06:00
committed by GitHub
2 changed files with 10 additions and 1 deletions

View File

@@ -55,7 +55,13 @@ public class TimedEvents : ITimedEvents
{ {
// Convert Stopwatch ticks to TimeSpan ticks (100-nanosecond units) // Convert Stopwatch ticks to TimeSpan ticks (100-nanosecond units)
// Stopwatch.Frequency gives ticks per second, so we need to scale appropriately // Stopwatch.Frequency gives ticks per second, so we need to scale appropriately
return Stopwatch.GetTimestamp () * TimeSpan.TicksPerSecond / Stopwatch.Frequency; // To avoid overflow, we perform the operation in double precision first and then cast to long.
var ticks = (long)((double)Stopwatch.GetTimestamp () * TimeSpan.TicksPerSecond / Stopwatch.Frequency);
// Ensure ticks is positive and not overflowed (very unlikely now)
Debug.Assert (ticks > 0);
return ticks;
} }
/// <inheritdoc/> /// <inheritdoc/>

View File

@@ -92,9 +92,12 @@ public class TimedEventsTests
return false; return false;
}); });
Assert.True (timedEvents.Timeouts.Keys [0] > 0);
// Should execute on first RunTimers call // Should execute on first RunTimers call
timedEvents.RunTimers (); timedEvents.RunTimers ();
Assert.Empty (timedEvents.Timeouts);
Assert.True (executed); Assert.True (executed);
} }