Merge branch 'simplify-posix_memalign' into 'master'

Minor fixes to posix_memalign()

See merge request redox-os/relibc!271
This commit is contained in:
Jeremy Soller
2020-05-24 19:18:53 +00:00
+7 -10
View File
@@ -643,21 +643,18 @@ pub unsafe extern "C" fn posix_memalign(
alignment: size_t,
size: size_t,
) -> c_int {
const void_ptr_size: usize = mem::size_of::<*mut c_void>();
const VOID_PTR_SIZE: usize = mem::size_of::<*mut c_void>();
/* Check that alignment is:
* a) a multiple of sizeof(void *)
* b) a power-of-two multiple of sizeof(void *). Integer division as
* below gives the correct result once a) is ensured. */
if alignment % void_ptr_size == 0 && (alignment / void_ptr_size).is_power_of_two() {
if alignment % VOID_PTR_SIZE == 0 && alignment.is_power_of_two() {
let ptr = platform::alloc_align(size, alignment);
if !ptr.is_null() {
*memptr = ptr;
0
} else {
*memptr = ptr;
if ptr.is_null() {
ENOMEM
} else {
0
}
} else {
*memptr = ptr::null_mut();
EINVAL
}
}