about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2018-08-30 11:39:40 +0200
committerRalf Jung <post@ralfj.de>2018-08-30 11:39:40 +0200
commit97d693a19a001a38f18cfd49a89ddfb8b7d3fa94 (patch)
treec5254de5439f28034255fb7d86e04199bc58b1c5
parentb06a8db26e660505601b764e5d702fc17d7d73ee (diff)
downloadrust-97d693a19a001a38f18cfd49a89ddfb8b7d3fa94.tar.gz
rust-97d693a19a001a38f18cfd49a89ddfb8b7d3fa94.zip
assert sanity in memory
-rw-r--r--src/librustc_mir/interpret/memory.rs9
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