From b0e8e28c720cf467f349319768c2e2050ed25673 Mon Sep 17 00:00:00 2001 From: HampusM Date: Sat, 22 Mar 2025 15:45:49 +0100 Subject: feat(ecs): check if value is too large in BitMask::field_prep --- ecs/src/util.rs | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'ecs/src') diff --git a/ecs/src/util.rs b/ecs/src/util.rs index 17436ff..6f7aed7 100644 --- a/ecs/src/util.rs +++ b/ecs/src/util.rs @@ -252,6 +252,8 @@ impl BitMask #[must_use] pub const fn field_prep(self, field_value: u64) -> u64 { + debug_assert!(field_value < 1 << self.mask.count_ones()); + ((field_value) << self.mask.trailing_zeros()) & (self.mask) } } @@ -319,4 +321,11 @@ mod tests { assert_eq!(BitMask::new(0b11000).field_prep(3), 0b11000); } + + #[test] + #[should_panic] + fn bitmask_field_prep_too_large_value_panics() + { + let _ = BitMask::new(0b001110).field_prep(9); + } } -- cgit v1.2.3-18-g5258