diff options
Diffstat (limited to 'crates/alloc_buddy/src/lib.rs')
-rw-r--r-- | crates/alloc_buddy/src/lib.rs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/crates/alloc_buddy/src/lib.rs b/crates/alloc_buddy/src/lib.rs index d0d4818..fc5d17e 100644 --- a/crates/alloc_buddy/src/lib.rs +++ b/crates/alloc_buddy/src/lib.rs @@ -44,12 +44,12 @@ extern crate std; // TODO: Remove me -mod bitvec; +mod bitset; mod free_list; mod tree; use crate::{ - bitvec::{Bitset, SubregionStatus}, + bitset::{Bitset, SubregionStatus}, free_list::{FreeList, FreeListNode}, tree::Tree, }; @@ -230,7 +230,9 @@ impl< unsafe { free_list.push(tree.base_ptr.unwrap().cast()) }; // Then, set a bit in the bitset to say that this region is present. - tree.bitset_mark_as_present(bitset, tree.size_class, 0); + let Ok(()) = tree.bitset_mark_as_present(bitset, tree.size_class, 0) else { + panic!("the first bit was already set in {tree:#?}\nbitset = {bitset:?}") + }; } } @@ -253,7 +255,9 @@ impl< let tree = &mut self.trees[tree_index]; // Mark the pointer as no longer being in the tree. - tree.bitset_mark_as_absent(&mut self.bitset, size_class, offset); + let Ok(()) = tree.bitset_mark_as_absent(self.bitset, size_class, offset) else { + panic!("the bit for tree {tree_index}, offset {offset} was not set in {self:#?}") + }; // Return the pointer. Ok(ptr) @@ -289,7 +293,9 @@ impl< } // Mark the pointer as being in the tree. - tree.bitset_mark_as_present(&mut self.bitset, size_class, offset); + let Ok(()) = tree.bitset_mark_as_present(self.bitset, size_class, offset) else { + panic!("the bit for tree {tree_index}, offset {offset} was already set in {self:#?}") + }; // Return the pointer to the appropriate free list. self.free_list(size_class).push(ptr); |