diff --git a/matter/src/codec/base38.rs b/matter/src/codec/base38.rs index 8beec25..7536ca7 100644 --- a/matter/src/codec/base38.rs +++ b/matter/src/codec/base38.rs @@ -55,10 +55,11 @@ pub fn encode(bytes: &[u8], length: usize) -> String { fn encode_base38(mut value: u32, char_count: u8) -> String { let mut result = String::new(); + let chars = BASE38_CHARS.chars(); for _ in 0..char_count { - let mut chars = BASE38_CHARS.chars(); + let mut use_chars = chars.clone(); let remainder = value % 38; - result.push(chars.nth(remainder as usize).unwrap()); + result.push(use_chars.nth(remainder as usize).unwrap()); value = (value - remainder) / 38; } result diff --git a/matter/src/pairing/qr.rs b/matter/src/pairing/qr.rs index 3107e63..bc86e90 100644 --- a/matter/src/pairing/qr.rs +++ b/matter/src/pairing/qr.rs @@ -492,14 +492,8 @@ fn populate_tlv_bits( ) -> Result<(), Error> { if let (Some(data), Some(data_length_in_bytes)) = (tlv_data.data, tlv_data.data_length_in_bytes) { - for pos in 0..data_length_in_bytes { - populate_bits( - bits, - offset, - data[pos] as u64, - 8, - total_payload_size_in_bits, - )?; + for b in data.iter().take(data_length_in_bytes) { + populate_bits(bits, offset, *b as u64, 8, total_payload_size_in_bits)?; } } else { return Err(Error::InvalidArgument);