Skip to content

Commit 1eda7b1

Browse files
authored
Update AllocRef implementation for latest API changes (#30)
1 parent 2ed6c18 commit 1eda7b1

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/lib.rs

+14-4
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ extern crate alloc;
1313

1414
use alloc::alloc::Layout;
1515
#[cfg(feature = "alloc_ref")]
16-
use alloc::alloc::{AllocErr, AllocRef};
16+
use alloc::alloc::{AllocErr, AllocInit, AllocRef, MemoryBlock};
1717
use core::alloc::GlobalAlloc;
1818
use core::mem;
1919
#[cfg(feature = "use_spin")]
@@ -133,12 +133,22 @@ impl Heap {
133133

134134
#[cfg(feature = "alloc_ref")]
135135
unsafe impl AllocRef for Heap {
136-
fn alloc(&mut self, layout: Layout) -> Result<(NonNull<u8>, usize), AllocErr> {
136+
fn alloc(&mut self, layout: Layout, init: AllocInit) -> Result<MemoryBlock, AllocErr> {
137137
if layout.size() == 0 {
138-
return Ok((layout.dangling(), 0));
138+
return Ok(MemoryBlock {
139+
ptr: layout.dangling(),
140+
size: 0,
141+
});
139142
}
140143
match self.allocate_first_fit(layout) {
141-
Ok(ptr) => Ok((ptr, layout.size())),
144+
Ok(ptr) => {
145+
let block = MemoryBlock {
146+
ptr,
147+
size: layout.size(),
148+
};
149+
unsafe { init.init(block) };
150+
Ok(block)
151+
}
142152
Err(()) => Err(AllocErr),
143153
}
144154
}

0 commit comments

Comments
 (0)