diff options
Diffstat (limited to 'rsnix/src/memory.rs')
| -rw-r--r-- | rsnix/src/memory.rs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/rsnix/src/memory.rs b/rsnix/src/memory.rs index 7c3eda0..e03af8b 100644 --- a/rsnix/src/memory.rs +++ b/rsnix/src/memory.rs | |||
| @@ -458,7 +458,9 @@ pub fn self_test() -> bool { | |||
| 458 | seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1); | 458 | seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1); |
| 459 | let align = 16usize << (seed as usize % 8); | 459 | let align = 16usize << (seed as usize % 8); |
| 460 | seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1); | 460 | seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1); |
| 461 | let layout = Layout::from_size_align(size, align).unwrap(); | 461 | let Ok(layout) = Layout::from_size_align(size, align) else { |
| 462 | return false; // impossible: size <= 2048, align <= 2048 | ||
| 463 | }; | ||
| 462 | let p = ALLOCATOR.alloc(layout); | 464 | let p = ALLOCATOR.alloc(layout); |
| 463 | if p.is_null() { | 465 | if p.is_null() { |
| 464 | break; // heap exhausted — stop | 466 | break; // heap exhausted — stop |
| @@ -493,7 +495,9 @@ pub fn self_test() -> bool { | |||
| 493 | seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1); | 495 | seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1); |
| 494 | let align = 16usize << (seed as usize % 8); | 496 | let align = 16usize << (seed as usize % 8); |
| 495 | seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1); | 497 | seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1); |
| 496 | let layout = Layout::from_size_align(size, align).unwrap(); | 498 | let Ok(layout) = Layout::from_size_align(size, align) else { |
| 499 | return false; // impossible: size <= 2048, align <= 2048 | ||
| 500 | }; | ||
| 497 | let p = ALLOCATOR.alloc(layout); | 501 | let p = ALLOCATOR.alloc(layout); |
| 498 | if p.is_null() { | 502 | if p.is_null() { |
| 499 | return false; // failed to reuse freed space | 503 | return false; // failed to reuse freed space |
| @@ -510,7 +514,9 @@ pub fn self_test() -> bool { | |||
| 510 | if *ptr == 0 { | 514 | if *ptr == 0 { |
| 511 | continue; | 515 | continue; |
| 512 | } | 516 | } |
| 513 | let layout = Layout::from_size_align(*size, *align).unwrap(); | 517 | let Ok(layout) = Layout::from_size_align(*size, *align) else { |
| 518 | return false; // impossible: sizes/aligns came from the loop above | ||
| 519 | }; | ||
| 514 | ALLOCATOR.dealloc(*ptr as *mut u8, layout); | 520 | ALLOCATOR.dealloc(*ptr as *mut u8, layout); |
| 515 | } | 521 | } |
| 516 | let stats = heap_stats(); | 522 | let stats = heap_stats(); |
