partial_free.rs 1.0 KB

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