diff options
| author | Ralf Jung <post@ralfj.de> | 2024-08-27 19:29:52 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2024-08-27 19:29:52 +0200 |
| commit | e17be955bbd5c0fa6e95805a2cb96946262cd75b (patch) | |
| tree | 439861ce4a4a9a2ce8eeb17567350d21e590575b /compiler/rustc_const_eval/src | |
| parent | 600edc948ab5de7a92538bcc2f49cb8d47925e2d (diff) | |
| download | rust-e17be955bbd5c0fa6e95805a2cb96946262cd75b.tar.gz rust-e17be955bbd5c0fa6e95805a2cb96946262cd75b.zip | |
interpret: add missing alignment check in raw_eq
Diffstat (limited to 'compiler/rustc_const_eval/src')
| -rw-r--r-- | compiler/rustc_const_eval/src/interpret/intrinsics.rs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/compiler/rustc_const_eval/src/interpret/intrinsics.rs b/compiler/rustc_const_eval/src/interpret/intrinsics.rs index aef39b9af2f..bedc56de0da 100644 --- a/compiler/rustc_const_eval/src/interpret/intrinsics.rs +++ b/compiler/rustc_const_eval/src/interpret/intrinsics.rs @@ -684,19 +684,19 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> { assert!(layout.is_sized()); let get_bytes = |this: &InterpCx<'tcx, M>, - op: &OpTy<'tcx, <M as Machine<'tcx>>::Provenance>, - size| + op: &OpTy<'tcx, <M as Machine<'tcx>>::Provenance>| -> InterpResult<'tcx, &[u8]> { let ptr = this.read_pointer(op)?; - let Some(alloc_ref) = self.get_ptr_alloc(ptr, size)? else { + this.check_ptr_align(ptr, layout.align.abi)?; + let Some(alloc_ref) = self.get_ptr_alloc(ptr, layout.size)? else { // zero-sized access return Ok(&[]); }; alloc_ref.get_bytes_strip_provenance() }; - let lhs_bytes = get_bytes(self, lhs, layout.size)?; - let rhs_bytes = get_bytes(self, rhs, layout.size)?; + let lhs_bytes = get_bytes(self, lhs)?; + let rhs_bytes = get_bytes(self, rhs)?; Ok(Scalar::from_bool(lhs_bytes == rhs_bytes)) } } |
