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 {
329
329
/// The pointer to `hole_addr` is automatically aligned.
330
330
pub unsafe fn new ( hole_addr : * mut u8 , hole_size : usize ) -> HoleList {
331
331
assert_eq ! ( size_of:: <Hole >( ) , Self :: min_size( ) ) ;
332
+ assert ! ( hole_size >= size_of:: <Hole >( ) ) ;
332
333
333
334
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
+
334
338
let ptr = aligned_hole_addr as * mut Hole ;
335
339
ptr. write ( Hole {
336
- size : hole_size - ( ( aligned_hole_addr as usize ) - ( hole_addr as usize ) ) ,
340
+ size : aligned_hole_size ,
337
341
next : None ,
338
342
} ) ;
339
343
344
+ assert_eq ! (
345
+ hole_addr. wrapping_add( hole_size) ,
346
+ aligned_hole_addr. wrapping_add( aligned_hole_size)
347
+ ) ;
340
348
HoleList {
341
349
first : Hole {
342
350
size : 0 ,
You can’t perform that action at this time.
0 commit comments