Skip to content

Commit

Permalink
Fix typo incrementing instead of decrementing (#595)
Browse files Browse the repository at this point in the history
* fix: typo incrementing instead of decrementing

* Add tests for MostSeen decrement bug 

This bug requires a specific set of circumstances to trigger
and become visible:
1. decrement a label that is non-zero but not first
2. repeat the decrement at least best_count()/2 times
3. increment that label
4. check the best count

---------

Co-authored-by: teor <[email protected]>
  • Loading branch information
clostao and teor2345 authored Jan 10, 2025
1 parent d4a557c commit 4161d9a
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion backend/common/src/most_seen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ impl<T: Hash + Eq + Clone> MostSeen<T> {

// Item is in the map; not the best anyway. decrement count.
if let Some(count) = self.others.get_mut(item) {
*count += 1;
*count = count.saturating_sub(1);
}
ChangeResult::NoChange
}
Expand Down Expand Up @@ -248,5 +248,11 @@ mod test {
assert!(res.has_changed());
assert_eq!(a.best_count(), 2);
assert_eq!(*a.best(), "First"); // First is now ahead

a.remove(&"Third"); // 0, or 2 with bug #595
a.remove(&"Third"); // 0, or 4 with bug #595
a.insert(&"Third"); // 1, or 5 with bug #595
assert_eq!(a.best_count(), 2);
assert_eq!(*a.best(), "First"); // First is still ahead
}
}

0 comments on commit 4161d9a

Please sign in to comment.