Fix assertion in MaybeUninit::array_assume_init() for zero-length arrays

This commit is contained in:
hyd-dev 2021-01-26 23:21:00 +08:00
parent 1483e67add
commit f52066726d
No known key found for this signature in database
GPG Key ID: 74FA7FD5B8DA14B8
2 changed files with 3 additions and 1 deletions

View File

@ -839,7 +839,7 @@ impl<T> MaybeUninit<T> {
// * MaybeUnint does not drop, so there are no double-frees
// And thus the conversion is safe
unsafe {
intrinsics::assert_inhabited::<T>();
intrinsics::assert_inhabited::<[T; N]>();
(&array as *const _ as *const [T; N]).read()
}
}

View File

@ -152,6 +152,8 @@ fn uninit_array_assume_init() {
let array = unsafe { MaybeUninit::array_assume_init(array) };
assert_eq!(array, [3, 1, 4, 1, 5]);
let [] = unsafe { MaybeUninit::<!>::array_assume_init([]) };
}
#[test]