summaryrefslogtreecommitdiff
path: root/rust/src
diff options
context:
space:
mode:
Diffstat (limited to 'rust/src')
-rw-r--r--rust/src/low_level_il/operation.rs14
1 files changed, 8 insertions, 6 deletions
diff --git a/rust/src/low_level_il/operation.rs b/rust/src/low_level_il/operation.rs
index 419a0dcd..fa320060 100644
--- a/rust/src/low_level_il/operation.rs
+++ b/rust/src/low_level_il/operation.rs
@@ -1754,12 +1754,14 @@ where
}
}
- let mut mask = -1i64 as u64;
-
- if self.op.size < mem::size_of::<u64>() {
- mask <<= self.op.size * 8;
- mask = !mask;
- }
+ let mask: u64 = if self.op.size == 0 {
+ 1
+ } else if self.op.size < mem::size_of::<u64>() {
+ let m = -1i64 << (self.op.size * 8);
+ !m as u64
+ } else {
+ (-1i64) as u64
+ };
self.op.operands[0] & mask
}