diff options
| author | Ralf Jung <post@ralfj.de> | 2019-02-09 19:58:41 +0100 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2019-02-09 21:24:29 +0100 |
| commit | a01efbcbec2123429a7eaa73ce1c9198007af7cf (patch) | |
| tree | 673b9b3e3af77dfdda4eabb83ee1c1f4e76bfd79 | |
| parent | 312f3827faa8dc3b8e1dc8c1ad685a6222f16f03 (diff) | |
| download | rust-a01efbcbec2123429a7eaa73ce1c9198007af7cf.tar.gz rust-a01efbcbec2123429a7eaa73ce1c9198007af7cf.zip | |
operand-to-place copies should never be overlapping
| -rw-r--r-- | src/librustc_mir/interpret/place.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/librustc_mir/interpret/place.rs b/src/librustc_mir/interpret/place.rs index 9ca7f9d8e27..3d6fcae0cab 100644 --- a/src/librustc_mir/interpret/place.rs +++ b/src/librustc_mir/interpret/place.rs @@ -823,6 +823,8 @@ where let src = match self.try_read_immediate(src)? { Ok(src_val) => { // Yay, we got a value that we can write directly. + // FIXME: Add a check to make sure that if `src` is indirect, + // it does not overlap with `dest`. return self.write_immediate_no_validate(src_val, dest); } Err(mplace) => mplace, @@ -836,7 +838,8 @@ where self.memory.copy( src_ptr, src_align, dest_ptr, dest_align, - dest.layout.size, false + dest.layout.size, + /*nonoverlapping*/ true, )?; Ok(()) |
