Skip to content

Commit

Permalink
Conversions between Result<*mut u8, AllocErr>> and *mut Void
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonSapin committed Apr 12, 2018
1 parent c957e99 commit 747cc74
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 18 deletions.
21 changes: 3 additions & 18 deletions src/liballoc_system/lib.rs
Expand Up @@ -139,22 +139,12 @@ macro_rules! alloc_methods_based_on_global_alloc {
() => {
#[inline]
unsafe fn alloc(&mut self, layout: Layout) -> Result<*mut u8, AllocErr> {
let ptr = GlobalAlloc::alloc(*self, layout);
if !ptr.is_null() {
Ok(ptr as *mut u8)
} else {
Err(AllocErr)
}
GlobalAlloc::alloc(*self, layout).into()
}

#[inline]
unsafe fn alloc_zeroed(&mut self, layout: Layout) -> Result<*mut u8, AllocErr> {
let ptr = GlobalAlloc::alloc_zeroed(*self, layout);
if !ptr.is_null() {
Ok(ptr as *mut u8)
} else {
Err(AllocErr)
}
GlobalAlloc::alloc_zeroed(*self, layout).into()
}

#[inline]
Expand All @@ -167,12 +157,7 @@ macro_rules! alloc_methods_based_on_global_alloc {
ptr: *mut u8,
old_layout: Layout,
new_size: usize) -> Result<*mut u8, AllocErr> {
let ptr = GlobalAlloc::realloc(*self, ptr as *mut Void, old_layout, new_size);
if !ptr.is_null() {
Ok(ptr as *mut u8)
} else {
Err(AllocErr)
}
GlobalAlloc::realloc(*self, ptr as *mut Void, old_layout, new_size).into()
}
}
}
Expand Down
21 changes: 21 additions & 0 deletions src/libcore/alloc.rs
Expand Up @@ -41,6 +41,27 @@ impl Void {
}
}

/// Convert from a return value of GlobalAlloc::alloc to that of Alloc::alloc
impl From<*mut Void> for Result<*mut u8, AllocErr> {
fn from(ptr: *mut Void) -> Self {
if !ptr.is_null() {
Ok(ptr as *mut u8)
} else {
Err(AllocErr)
}
}
}

/// Convert from a return value of Alloc::alloc to that of GlobalAlloc::alloc
impl From<Result<*mut u8, AllocErr>> for *mut Void {
fn from(result: Result<*mut u8, AllocErr>) -> Self {
match result {
Ok(ptr) => ptr as *mut Void,
Err(_) => Void::null_mut(),
}
}
}

/// Represents the combination of a starting address and
/// a total capacity of the returned block.
#[derive(Debug)]
Expand Down

0 comments on commit 747cc74

Please sign in to comment.