From f068eeb8f0bb9cf631b662006ef50183bfd91aa8 Mon Sep 17 00:00:00 2001 From: bluurryy <164359728+bluurryy@users.noreply.github.com> Date: Wed, 1 May 2024 10:10:28 +0200 Subject: [PATCH] fix: wrong debug assertion for greedy consolidation (fixes #16) --- src/bump_scope.rs | 2 +- src/tests/mod.rs | 1 + src/tests/unaligned_collection.rs | 43 +++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/tests/unaligned_collection.rs diff --git a/src/bump_scope.rs b/src/bump_scope.rs index 42f0d14..c9625bd 100644 --- a/src/bump_scope.rs +++ b/src/bump_scope.rs @@ -190,7 +190,7 @@ where #[inline(always)] fn set_pos(&self, pos: NonZeroUsize, current_align: usize) { let chunk = self.chunk.get(); - debug_assert_eq!(nonnull::addr(chunk.pos()).get() % current_align, 0); + debug_assert_eq!(pos.get() % current_align, 0); unsafe { chunk.set_pos_addr(pos.get()) } diff --git a/src/tests/mod.rs b/src/tests/mod.rs index 75a7f51..ac6db5c 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -26,6 +26,7 @@ mod bump_vec_doc; mod mut_bump_vec_rev_doc; mod panic_safety; mod pool; +mod unaligned_collection; #[cfg(feature = "serde")] mod serde; diff --git a/src/tests/unaligned_collection.rs b/src/tests/unaligned_collection.rs new file mode 100644 index 0000000..2d32e55 --- /dev/null +++ b/src/tests/unaligned_collection.rs @@ -0,0 +1,43 @@ +use super::*; + +either_way! { + bump_vec + mut_bump_vec + mut_bump_vec_rev +} + +fn bump_vec() { + let bump = Bump::::new(); + + bump.alloc(8u8); + + let mut vec = BumpVec::new_in(&bump); + vec.push(32u32); + + let slice = vec.into_slice(); + dbg!(slice); +} + +fn mut_bump_vec() { + let mut bump = Bump::::new(); + + bump.alloc(8u8); + + let mut vec = MutBumpVec::new_in(&mut bump); + vec.push(32u32); + + let slice = vec.into_slice(); + dbg!(slice); +} + +fn mut_bump_vec_rev() { + let mut bump = Bump::::new(); + + bump.alloc(8u8); + + let mut vec = MutBumpVecRev::new_in(&mut bump); + vec.push(32u32); + + let slice = vec.into_slice(); + dbg!(slice); +}