@@ -13,7 +13,7 @@ extern crate alloc;
1313
1414use alloc:: alloc:: Layout ;
1515#[ cfg( feature = "alloc_ref" ) ]
16- use alloc:: alloc:: { AllocErr , AllocRef } ;
16+ use alloc:: alloc:: { AllocErr , AllocInit , AllocRef , MemoryBlock } ;
1717use core:: alloc:: GlobalAlloc ;
1818use core:: mem;
1919#[ cfg( feature = "use_spin" ) ]
@@ -133,12 +133,22 @@ impl Heap {
133133
134134#[ cfg( feature = "alloc_ref" ) ]
135135unsafe 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