diff options
| author | Ralf Jung <post@ralfj.de> | 2018-08-30 11:39:40 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2018-08-30 11:39:40 +0200 |
| commit | 97d693a19a001a38f18cfd49a89ddfb8b7d3fa94 (patch) | |
| tree | c5254de5439f28034255fb7d86e04199bc58b1c5 | |
| parent | b06a8db26e660505601b764e5d702fc17d7d73ee (diff) | |
| download | rust-97d693a19a001a38f18cfd49a89ddfb8b7d3fa94.tar.gz rust-97d693a19a001a38f18cfd49a89ddfb8b7d3fa94.zip | |
assert sanity in memory
| -rw-r--r-- | src/librustc_mir/interpret/memory.rs | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/librustc_mir/interpret/memory.rs b/src/librustc_mir/interpret/memory.rs index 18e96bf2040..91fc6453446 100644 --- a/src/librustc_mir/interpret/memory.rs +++ b/src/librustc_mir/interpret/memory.rs @@ -258,13 +258,12 @@ impl<'a, 'mir, 'tcx, M: Machine<'mir, 'tcx>> Memory<'a, 'mir, 'tcx, M> { } Scalar::Bits { bits, size } => { assert_eq!(size as u64, self.pointer_size().bytes()); - // FIXME: what on earth does this line do? docs or fix needed! - let v = ((bits as u128) % (1 << self.pointer_size().bytes())) as u64; - if v == 0 { + assert!(bits < (1u128 << self.pointer_size().bits())); + if bits == 0 { return err!(InvalidNullPointerUsage); } - // the base address if the "integer allocation" is 0 and hence always aligned - (v, required_align) + // the "base address" is 0 and hence always aligned + (bits as u64, required_align) } }; // Check alignment |
