@@ -13,7 +13,7 @@ extern crate alloc;
13
13
14
14
use alloc:: alloc:: Layout ;
15
15
#[ cfg( feature = "alloc_ref" ) ]
16
- use alloc:: alloc:: { AllocErr , AllocRef } ;
16
+ use alloc:: alloc:: { AllocErr , AllocInit , AllocRef , MemoryBlock } ;
17
17
use core:: alloc:: GlobalAlloc ;
18
18
use core:: mem;
19
19
#[ cfg( feature = "use_spin" ) ]
@@ -133,12 +133,22 @@ impl Heap {
133
133
134
134
#[ cfg( feature = "alloc_ref" ) ]
135
135
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 > {
137
137
if layout. size ( ) == 0 {
138
- return Ok ( ( layout. dangling ( ) , 0 ) ) ;
138
+ return Ok ( MemoryBlock {
139
+ ptr : layout. dangling ( ) ,
140
+ size : 0 ,
141
+ } ) ;
139
142
}
140
143
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
+ }
142
152
Err ( ( ) ) => Err ( AllocErr ) ,
143
153
}
144
154
}
0 commit comments