File tree Expand file tree Collapse file tree 1 file changed +9
-1
lines changed
Expand file tree Collapse file tree 1 file changed +9
-1
lines changed Original file line number Diff line number Diff line change @@ -329,14 +329,22 @@ impl HoleList {
329329 /// The pointer to `hole_addr` is automatically aligned.
330330 pub unsafe fn new ( hole_addr : * mut u8 , hole_size : usize ) -> HoleList {
331331 assert_eq ! ( size_of:: <Hole >( ) , Self :: min_size( ) ) ;
332+ assert ! ( hole_size >= size_of:: <Hole >( ) ) ;
332333
333334 let aligned_hole_addr = align_up ( hole_addr, align_of :: < Hole > ( ) ) ;
335+ let aligned_hole_size = hole_size - ( ( aligned_hole_addr as usize ) - ( hole_addr as usize ) ) ;
336+ assert ! ( aligned_hole_size >= size_of:: <Hole >( ) ) ;
337+
334338 let ptr = aligned_hole_addr as * mut Hole ;
335339 ptr. write ( Hole {
336- size : hole_size - ( ( aligned_hole_addr as usize ) - ( hole_addr as usize ) ) ,
340+ size : aligned_hole_size ,
337341 next : None ,
338342 } ) ;
339343
344+ assert_eq ! (
345+ hole_addr. wrapping_add( hole_size) ,
346+ aligned_hole_addr. wrapping_add( aligned_hole_size)
347+ ) ;
340348 HoleList {
341349 first : Hole {
342350 size : 0 ,
You can’t perform that action at this time.
0 commit comments