From 5657eefcd8f976e2558d8eae47e73ddb2119ccba Mon Sep 17 00:00:00 2001 From: Tamir Duberstein Date: Mon, 28 Dec 2015 20:04:20 -0500 Subject: [PATCH] android has `posix_memalign` for API 16+ since NDK r10d See: http://developer.android.com/ndk/downloads/revision_history.html Also, use `libc`'s `posix_memalign`. --- src/liballoc_system/lib.rs | 32 ++++++-------------------------- src/liblibc | 2 +- 2 files changed, 7 insertions(+), 27 deletions(-) diff --git a/src/liballoc_system/lib.rs b/src/liballoc_system/lib.rs index fccc024603ebd..a4e98e413bbb5 100644 --- a/src/liballoc_system/lib.rs +++ b/src/liballoc_system/lib.rs @@ -75,37 +75,17 @@ mod imp { use libc; use MIN_ALIGN; - extern "C" { - // Apparently android doesn't have posix_memalign - #[cfg(target_os = "android")] - fn memalign(align: libc::size_t, size: libc::size_t) -> *mut libc::c_void; - - #[cfg(not(target_os = "android"))] - fn posix_memalign(memptr: *mut *mut libc::c_void, - align: libc::size_t, - size: libc::size_t) - -> libc::c_int; - } - pub unsafe fn allocate(size: usize, align: usize) -> *mut u8 { if align <= MIN_ALIGN { libc::malloc(size as libc::size_t) as *mut u8 } else { - #[cfg(target_os = "android")] - unsafe fn more_aligned_malloc(size: usize, align: usize) -> *mut u8 { - memalign(align as libc::size_t, size as libc::size_t) as *mut u8 - } - #[cfg(not(target_os = "android"))] - unsafe fn more_aligned_malloc(size: usize, align: usize) -> *mut u8 { - let mut out = ptr::null_mut(); - let ret = posix_memalign(&mut out, align as libc::size_t, size as libc::size_t); - if ret != 0 { - ptr::null_mut() - } else { - out as *mut u8 - } + let mut out = ptr::null_mut(); + let ret = libc::posix_memalign(&mut out, align as libc::size_t, size as libc::size_t); + if ret != 0 { + ptr::null_mut() + } else { + out as *mut u8 } - more_aligned_malloc(size, align) } } diff --git a/src/liblibc b/src/liblibc index e0c0bf439add6..95d6a00134f28 160000 --- a/src/liblibc +++ b/src/liblibc @@ -1 +1 @@ -Subproject commit e0c0bf439add63a6a25a25ba47e4aec9547bf9af +Subproject commit 95d6a00134f284e6b889d98f4c2cb4b285950327