@@ -6,39 +6,39 @@ use std::slice;
6
6
7
7
fn check_alloc < T : AllocRef > ( mut allocator : T ) { unsafe {
8
8
for & align in & [ 4 , 8 , 16 , 32 ] {
9
- let layout = Layout :: from_size_align ( 20 , align) . unwrap ( ) ;
9
+ let layout_20 = Layout :: from_size_align ( 20 , align) . unwrap ( ) ;
10
+ let layout_40 = Layout :: from_size_align ( 40 , 4 * align) . unwrap ( ) ;
11
+ let layout_10 = Layout :: from_size_align ( 10 , align/2 ) . unwrap ( ) ;
10
12
11
13
for _ in 0 ..32 {
12
- let a = allocator. alloc ( layout ) . unwrap ( ) . as_non_null_ptr ( ) ;
13
- assert_eq ! ( a. as_ptr( ) as usize % align, 0 , "pointer is incorrectly aligned" ) ;
14
- allocator. dealloc ( a, layout ) ;
14
+ let a = allocator. alloc ( layout_20 ) . unwrap ( ) . as_non_null_ptr ( ) ;
15
+ assert_eq ! ( a. as_ptr( ) as usize % layout_20 . align( ) , 0 , "pointer is incorrectly aligned" ) ;
16
+ allocator. dealloc ( a, layout_20 ) ;
15
17
}
16
18
17
- let p1 = allocator. alloc_zeroed ( layout ) . unwrap ( ) . as_non_null_ptr ( ) ;
18
- assert_eq ! ( p1. as_ptr( ) as usize % align, 0 , "pointer is incorrectly aligned" ) ;
19
+ let p1 = allocator. alloc_zeroed ( layout_20 ) . unwrap ( ) . as_non_null_ptr ( ) ;
20
+ assert_eq ! ( p1. as_ptr( ) as usize % layout_20 . align( ) , 0 , "pointer is incorrectly aligned" ) ;
19
21
assert_eq ! ( * p1. as_ptr( ) , 0 ) ;
20
22
21
23
// old size < new size
22
- let p2 = allocator. grow ( p1, layout, 40 ) . unwrap ( ) . as_non_null_ptr ( ) ;
23
- let layout = Layout :: from_size_align ( 40 , align) . unwrap ( ) ;
24
- assert_eq ! ( p2. as_ptr( ) as usize % align, 0 , "pointer is incorrectly aligned" ) ;
24
+ let p2 = allocator. grow ( p1, layout_20, layout_40) . unwrap ( ) . as_non_null_ptr ( ) ;
25
+ assert_eq ! ( p2. as_ptr( ) as usize % layout_40. align( ) , 0 , "pointer is incorrectly aligned" ) ;
25
26
let slice = slice:: from_raw_parts ( p2. as_ptr ( ) , 20 ) ;
26
27
assert_eq ! ( & slice, & [ 0_u8 ; 20 ] ) ;
27
28
28
29
// old size == new size
29
- let p3 = allocator. grow ( p2, layout , 40 ) . unwrap ( ) . as_non_null_ptr ( ) ;
30
- assert_eq ! ( p3. as_ptr( ) as usize % align, 0 , "pointer is incorrectly aligned" ) ;
30
+ let p3 = allocator. grow ( p2, layout_40 , layout_40 ) . unwrap ( ) . as_non_null_ptr ( ) ;
31
+ assert_eq ! ( p3. as_ptr( ) as usize % layout_40 . align( ) , 0 , "pointer is incorrectly aligned" ) ;
31
32
let slice = slice:: from_raw_parts ( p3. as_ptr ( ) , 20 ) ;
32
33
assert_eq ! ( & slice, & [ 0_u8 ; 20 ] ) ;
33
34
34
35
// old size > new size
35
- let p4 = allocator. shrink ( p3, layout, 10 ) . unwrap ( ) . as_non_null_ptr ( ) ;
36
- let layout = Layout :: from_size_align ( 10 , align) . unwrap ( ) ;
37
- assert_eq ! ( p4. as_ptr( ) as usize % align, 0 , "pointer is incorrectly aligned" ) ;
36
+ let p4 = allocator. shrink ( p3, layout_40, layout_10) . unwrap ( ) . as_non_null_ptr ( ) ;
37
+ assert_eq ! ( p4. as_ptr( ) as usize % layout_10. align( ) , 0 , "pointer is incorrectly aligned" ) ;
38
38
let slice = slice:: from_raw_parts ( p4. as_ptr ( ) , 10 ) ;
39
39
assert_eq ! ( & slice, & [ 0_u8 ; 10 ] ) ;
40
40
41
- allocator. dealloc ( p4, layout ) ;
41
+ allocator. dealloc ( p4, layout_10 ) ;
42
42
}
43
43
} }
44
44
0 commit comments