diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-09-27 13:43:32 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-27 13:43:32 +0000 |
| commit | e6c5244e7eee1a23d5b9c12af7e3eec354718ea3 (patch) | |
| tree | 624102165b055833322c8ca12ab8a54a56cc958d | |
| parent | 8940c50fa739f47045ce45b23422645bf4922538 (diff) | |
| parent | cdab00a0c63dc8fa6a69877799af665564170b9b (diff) | |
Merge #536
536: Fix a bug in the timer queue due to comparison bug in embedded-time r=AfoHT a=korken89
Co-authored-by: Emil Fresk <emil.fresk@gmail.com>
| -rw-r--r-- | src/tq.rs | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -111,7 +111,9 @@ where mono.clear_compare_flag(); if let Some(instant) = self.0.peek().map(|p| p.instant) { - if instant <= unwrapper(Clock::try_now(mono)) { + let now = unwrapper(Clock::try_now(mono)); + // This if statement is like this and not <= due to a bug in embedded-time + if instant < now || instant == now { // task became ready let nr = unsafe { self.0.pop_unchecked() }; @@ -124,7 +126,8 @@ where // dequeue. If the monotonic is fast enough it can happen that from the // read of now to the set of the compare, the time can overflow. This is to // guard against this. - if instant <= unwrapper(Clock::try_now(mono)) { + let now = unwrapper(Clock::try_now(mono)); + if instant < now || instant == now { let nr = unsafe { self.0.pop_unchecked() }; Some((nr.task, nr.index)) |
