From 66b9e401a5ceb86bd6807cc2127aadf9b3674c27 Mon Sep 17 00:00:00 2001 From: Marek Wiewiorski Date: Mon, 19 Aug 2024 21:24:24 +0200 Subject: [PATCH] bugfix: fix "attempt to shift left with overflow" exception when 1<<32 expression results in overflow for i32 type --- src/reader.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/reader.rs b/src/reader.rs index afeb8a9..c5bfd8e 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -209,7 +209,11 @@ fn decode_truncated_block_i32(data: &[u8], bit_size: usize) -> Vec { for i in 0..((bit_size + 7) / 8) { temp |= (data[byte_offset + i] as i32) << (i * 8); } - let value = (temp >> bit_remainder) & ((1 << bit_size) - 1); + let mut bit_mask: i32 = 0; + for i in 0..bit_size { + bit_mask |= 1<> bit_remainder) & bit_mask; samples.push(value); bit_offset += bit_size;