]>
git.proxmox.com Git - rustc.git/blob - vendor/dlmalloc/tests/smoke.rs
4 use dlmalloc
::Dlmalloc
;
10 let mut a
= Dlmalloc
::new();
12 let ptr
= a
.malloc(1, 1);
13 assert
!(!ptr
.is_null());
18 let ptr
= a
.malloc(1, 1);
19 assert
!(!ptr
.is_null());
28 let mut a
= Dlmalloc
::new();
29 let mut rng
= rand
::thread_rng();
30 let mut ptrs
= Vec
::new();
31 let max
= if cfg
!(test_lots
) { 1_000_000 }
else { 1_000 }
;
35 ptrs
.len() > 0 && ((ptrs
.len() < 10_000 && rng
.gen_weighted_bool(3)) || rng
.gen());
37 let idx
= rng
.gen_range(0, ptrs
.len());
38 let (ptr
, size
, align
) = ptrs
.swap_remove(idx
);
39 a
.free(ptr
, size
, align
);
43 if ptrs
.len() > 0 && rng
.gen_weighted_bool(100) {
44 let idx
= rng
.gen_range(0, ptrs
.len());
45 let (ptr
, size
, align
) = ptrs
.swap_remove(idx
);
46 let new_size
= if rng
.gen() {
47 rng
.gen_range(size
, size
* 2)
49 rng
.gen_range(size
/ 2, size
)
53 let mut tmp
= Vec
::new();
54 for i
in 0..cmp
::min(size
, new_size
) {
55 tmp
.push(*ptr
.offset(i
as isize));
57 let ptr
= a
.realloc(ptr
, size
, align
, new_size
);
58 assert
!(!ptr
.is_null());
59 for (i
, byte
) in tmp
.iter().enumerate() {
60 assert_eq
!(*byte
, *ptr
.offset(i
as isize));
62 ptrs
.push((ptr
, new_size
, align
));
65 let size
= if rng
.gen() {
68 rng
.gen_range(1, 128 * 1024)
70 let align
= if rng
.gen_weighted_bool(10) {
71 1 << rng
.gen_range(3, 8)
76 let zero
= rng
.gen_weighted_bool(50);
84 assert_eq
!(*ptr
.offset(i
as isize), 0);
86 *ptr
.offset(i
as isize) = 0xce;
88 ptrs
.push((ptr
, size
, align
));