diff --git a/src/rust/iced-x86/src/block_enc/block.rs b/src/rust/iced-x86/src/block_enc/block.rs index 1c6f55c93..a77b6ed63 100644 --- a/src/rust/iced-x86/src/block_enc/block.rs +++ b/src/rust/iced-x86/src/block_enc/block.rs @@ -63,7 +63,7 @@ impl Block { if self.valid_data.is_empty() { return Ok(()); } - for _ in 0..self.valid_data_address_aligned - self.valid_data_address { + for _ in 0..self.valid_data_address_aligned.wrapping_sub(self.valid_data_address) { self.encoder.write_byte_internal(0xCC); } match self.alignment { diff --git a/src/rust/iced-x86/src/block_enc/instr/mod.rs b/src/rust/iced-x86/src/block_enc/instr/mod.rs index ac91fa187..28632f2d3 100644 --- a/src/rust/iced-x86/src/block_enc/instr/mod.rs +++ b/src/rust/iced-x86/src/block_enc/instr/mod.rs @@ -42,7 +42,8 @@ pub(super) trait Instr { } fn correct_diff(in_block: bool, diff: i64, gained: u64) -> i64 { - if in_block && diff >= gained as i64 { + if in_block && diff >= 0 { + debug_assert!(diff as u64 >= gained); diff - gained as i64 } else { diff