From 8f8bc47cace8694c7890f967e9989b9d9ced4c3c Mon Sep 17 00:00:00 2001 From: "Jorge C. Leitao" Date: Fri, 7 Jan 2022 05:03:03 +0000 Subject: [PATCH] Fixed UB --- src/lib.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index e472204..f9196bb 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -80,11 +80,11 @@ fn append_from_within(seif: &mut Vec, src: ops::Range) where T: Cop unsafe { // This is safe because reserve() above succeeded, // so `seif.len() + count` did not overflow usize - ptr::copy_nonoverlapping( - seif.get_unchecked(src.start), - seif.get_unchecked_mut(vec_len), - count, - ); + // Derive both `src_ptr` and `dest_ptr` from the same loan + let ptr = seif.as_mut_ptr(); + let src_ptr = ptr.add(src.start); + let dest_ptr = ptr.add(vec_len); + ptr::copy_nonoverlapping(src_ptr, dest_ptr, count); seif.set_len(vec_len + count); } }