1 extern crate ralloc; 2 3 mod util; 4 5 use std::ptr; 6 7 #[test] 8 fn partial_free() { 9 util::multiply(|| { 10 let buf = ralloc::alloc(63, 3); 11 12 unsafe { 13 util::acid(|| { 14 ptr::write_bytes(buf, 0, 63); 15 *buf = 4; 16 }); 17 18 util::acid(|| { 19 ralloc::free(buf.offset(8), 55); 20 *buf = 5; 21 }); 22 23 util::acid(|| { 24 ralloc::free(buf, 4); 25 *buf.offset(4) = 3; 26 }); 27 28 assert_eq!(*buf.offset(4), 3); 29 } 30 }); 31 } 32 33 #[test] 34 fn partial_free_double() { 35 util::multiply(|| { 36 let buf = ralloc::alloc(64, 4); 37 38 unsafe { 39 util::acid(|| { 40 ptr::write_bytes(buf, 0, 64); 41 }); 42 43 util::acid(|| { 44 ralloc::free(buf.offset(32), 32); 45 *buf = 5; 46 }); 47 48 assert_eq!(*buf, 5); 49 50 util::acid(|| { 51 *buf = 0xAA; 52 ralloc::free(buf, 32); 53 }); 54 } 55 }); 56 } 57