diff --git a/src/encoding/expected_range_u64.rs b/src/encoding/expected_range_u64.rs index ff8d718..e257cf6 100644 --- a/src/encoding/expected_range_u64.rs +++ b/src/encoding/expected_range_u64.rs @@ -15,7 +15,7 @@ impl ExpectedRangeU64 { if Self::RANGE.is_power_of_two() { None } else { - Some(Self::RANGE + 1) + Some(Self::RANGE) } } diff --git a/src/tests.rs b/src/tests.rs index c643b6d..7594fc7 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -543,3 +543,18 @@ fn test_fixed_size_array() { the_same([1u64, 2, 3, 4, 5, 6, 7, 8]); the_same([0u8; 19]); } + +#[test] +fn expected_range_bug() { + #[derive(Encode, Decode, Serialize, Deserialize, PartialEq, Debug, Clone)] + pub struct UVec2 { + x: u16, + y: u16, + } + + #[derive(Encode, Decode, Serialize, Deserialize, PartialEq, Debug, Clone)] + pub struct Wrapper(#[bitcode_hint(expected_range = "0..31")] UVec2); + + let val = Wrapper(UVec2 { x: 500, y: 512 }); + the_same(val); +}