2
0
Эх сурвалжийг харах

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

Tig 1 сар өмнө
parent
commit
8d9633274e

+ 7 - 1
Terminal.Gui/App/Timeout/TimedEvents.cs

@@ -55,7 +55,13 @@ public class TimedEvents : ITimedEvents
     {
         // Convert Stopwatch ticks to TimeSpan ticks (100-nanosecond units)
         // 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/>

+ 3 - 0
Tests/UnitTests/Application/TimedEventsTests.cs

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