Improve miri's error reporting in check_in_alloc
This commit is contained in:
parent
7b4bc6974a
commit
705d75ef1a
3 changed files with 6 additions and 3 deletions
|
|
@ -353,7 +353,8 @@ impl<'tcx, Tag: Copy, Extra> Allocation<Tag, Extra> {
|
|||
// FIXME: Working around https://github.com/rust-lang/rust/issues/56209
|
||||
where Extra: AllocationExtra<Tag, MemoryExtra>
|
||||
{
|
||||
let bytes = self.get_bytes_mut(cx, ptr, Size::from_bytes(src.len() as u64), CheckInAllocMsg::WriteBytes)?;
|
||||
let bytes = self.get_bytes_mut(cx, ptr, Size::from_bytes(src.len() as u64),
|
||||
CheckInAllocMsg::WriteBytes)?;
|
||||
bytes.clone_from_slice(src);
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1418,7 +1418,8 @@ fn slice_pat_covered_by_const<'tcx>(
|
|||
return Ok(false);
|
||||
}
|
||||
let n = n.assert_usize(tcx).unwrap();
|
||||
alloc.get_bytes(&tcx, ptr, Size::from_bytes(n), CheckInAllocMsg::SlicePatCoveredByConst).unwrap()
|
||||
alloc.get_bytes(&tcx, ptr, Size::from_bytes(n),
|
||||
CheckInAllocMsg::SlicePatCoveredByConst).unwrap()
|
||||
},
|
||||
// a slice fat pointer to a zero length slice
|
||||
(ConstValue::Slice(Scalar::Bits { .. }, 0), ty::Slice(t)) => {
|
||||
|
|
|
|||
|
|
@ -667,7 +667,8 @@ impl<'a, 'mir, 'tcx, M: Machine<'a, 'mir, 'tcx>> InterpretCx<'a, 'mir, 'tcx, M>
|
|||
ScalarMaybeUndef::Scalar(Scalar::Ptr(ptr)) => {
|
||||
// The niche must be just 0 (which an inbounds pointer value never is)
|
||||
let ptr_valid = niche_start == 0 && variants_start == variants_end &&
|
||||
self.memory.check_bounds_ptr(ptr, CheckInAllocMsg::ReadDiscriminant).is_ok();
|
||||
self.memory.check_bounds_ptr(ptr,
|
||||
CheckInAllocMsg::ReadDiscriminant).is_ok();
|
||||
if !ptr_valid {
|
||||
return err!(InvalidDiscriminant(raw_discr.erase_tag()));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue