use checked arithmetic in intrptrcast
This commit is contained in:
parent
d5ca345c36
commit
724cf41eb1
1 changed files with 4 additions and 3 deletions
|
|
@ -95,7 +95,8 @@ impl<'mir, 'tcx> GlobalState {
|
|||
rng.gen_range(0, 16)
|
||||
};
|
||||
// From next_base_addr + slack, round up to adjust for alignment.
|
||||
let base_addr = Self::align_addr(global_state.next_base_addr + slack, align.bytes());
|
||||
let base_addr = global_state.next_base_addr.checked_add(slack).unwrap();
|
||||
let base_addr = Self::align_addr(base_addr, align.bytes());
|
||||
entry.insert(base_addr);
|
||||
trace!(
|
||||
"Assigning base address {:#x} to allocation {:?} (slack: {}, align: {})",
|
||||
|
|
@ -104,7 +105,7 @@ impl<'mir, 'tcx> GlobalState {
|
|||
|
||||
// Remember next base address. If this allocation is zero-sized, leave a gap
|
||||
// of at least 1 to avoid two allocations having the same base address.
|
||||
global_state.next_base_addr = base_addr + max(size.bytes(), 1);
|
||||
global_state.next_base_addr = base_addr.checked_add(max(size.bytes(), 1)).unwrap();
|
||||
// Given that `next_base_addr` increases in each allocation, pushing the
|
||||
// corresponding tuple keeps `int_to_ptr_map` sorted
|
||||
global_state.int_to_ptr_map.push((base_addr, ptr.alloc_id));
|
||||
|
|
@ -124,7 +125,7 @@ impl<'mir, 'tcx> GlobalState {
|
|||
fn align_addr(addr: u64, align: u64) -> u64 {
|
||||
match addr % align {
|
||||
0 => addr,
|
||||
rem => addr + align - rem
|
||||
rem => addr.checked_add(align).unwrap() - rem
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue