From: Ralf Jung Date: Sat, 29 Feb 2020 13:07:20 +0000 (+0100) Subject: clarify alignment requirements in Vec::from_raw_parts X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=0edc90cd1884c945b00512d2dede33c8a725ceb4;p=rust.git clarify alignment requirements in Vec::from_raw_parts --- diff --git a/src/liballoc/vec.rs b/src/liballoc/vec.rs index 29987ac44e6..fc50d06b33c 100644 --- a/src/liballoc/vec.rs +++ b/src/liballoc/vec.rs @@ -404,7 +404,10 @@ pub fn into_raw_parts(self) -> (*mut T, usize, usize) { /// /// * `ptr` needs to have been previously allocated via [`String`]/`Vec` /// (at least, it's highly likely to be incorrect if it wasn't). - /// * `ptr`'s `T` needs to have the same size and alignment as it was allocated with. + /// * `T` needs to have the same size and alignment as what `ptr` was allocated with. + /// (`T` having a less strict alignment is not sufficient, the alignment really + /// needs to be equal to satsify the [`dealloc`] requirement that memory must be + /// allocated and deallocated with the same layout.) /// * `length` needs to be less than or equal to `capacity`. /// * `capacity` needs to be the capacity that the pointer was allocated with. /// @@ -423,6 +426,7 @@ pub fn into_raw_parts(self) -> (*mut T, usize, usize) { /// function. /// /// [`String`]: ../../std/string/struct.String.html + /// [`dealloc`]: ../../alloc/alloc/trait.GlobalAlloc.html#tymethod.dealloc /// /// # Examples ///