diff options
| author | Ralf Jung <post@ralfj.de> | 2018-08-02 11:33:59 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2018-08-02 11:33:59 +0200 |
| commit | 7b24d2bb351efeea9c0109d8a662b1038fe8f539 (patch) | |
| tree | 25ce322f29e76cf4b52149cc0824771e2df4f647 | |
| parent | db5476571d9b27c862b95c1e64764b0ac8980e23 (diff) | |
| download | rust-7b24d2bb351efeea9c0109d8a662b1038fe8f539.tar.gz rust-7b24d2bb351efeea9c0109d8a662b1038fe8f539.zip | |
debug_assert to ensure that from_raw_parts is only used properly aligned
| -rw-r--r-- | src/libcore/slice/mod.rs | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/libcore/slice/mod.rs b/src/libcore/slice/mod.rs index a4dde38cb7b..eeb171ebb9b 100644 --- a/src/libcore/slice/mod.rs +++ b/src/libcore/slice/mod.rs @@ -3878,6 +3878,7 @@ unsafe impl<'a, T> TrustedRandomAccess for ExactChunksMut<'a, T> { #[inline] #[stable(feature = "rust1", since = "1.0.0")] pub unsafe fn from_raw_parts<'a, T>(data: *const T, len: usize) -> &'a [T] { + debug_assert!(data as usize % mem::align_of::<T>() == 0, "attempt to create unaligned slice"); Repr { raw: FatPtr { data, len } }.rust } @@ -3891,6 +3892,7 @@ pub unsafe fn from_raw_parts<'a, T>(data: *const T, len: usize) -> &'a [T] { #[inline] #[stable(feature = "rust1", since = "1.0.0")] pub unsafe fn from_raw_parts_mut<'a, T>(data: *mut T, len: usize) -> &'a mut [T] { + debug_assert!(data as usize % mem::align_of::<T>() == 0, "attempt to create unaligned slice"); Repr { raw: FatPtr { data, len} }.rust_mut } |
