iOS/tvOS/watchOS: Fix alloc w. large alignment on older versions
Tested on an old MacBook and the iOS simulator.
This commit is contained in:
@@ -13,7 +13,13 @@ unsafe impl GlobalAlloc for System {
|
|||||||
if layout.align() <= MIN_ALIGN && layout.align() <= layout.size() {
|
if layout.align() <= MIN_ALIGN && layout.align() <= layout.size() {
|
||||||
libc::malloc(layout.size()) as *mut u8
|
libc::malloc(layout.size()) as *mut u8
|
||||||
} else {
|
} else {
|
||||||
#[cfg(target_os = "macos")]
|
// `posix_memalign` returns a non-aligned value if supplied a very
|
||||||
|
// large alignment on older versions of Apple's platforms (unknown
|
||||||
|
// exactly which version range, but the issue is definitely
|
||||||
|
// present in macOS 10.14 and iOS 13.3).
|
||||||
|
//
|
||||||
|
// <https://github.com/rust-lang/rust/issues/30170>
|
||||||
|
#[cfg(target_vendor = "apple")]
|
||||||
{
|
{
|
||||||
if layout.align() > (1 << 31) {
|
if layout.align() > (1 << 31) {
|
||||||
return ptr::null_mut();
|
return ptr::null_mut();
|
||||||
|
|||||||
Reference in New Issue
Block a user