From: Skgland Date: Thu, 20 Nov 2025 22:08:46 +0000 (+0100) Subject: fix pstr_iter_tests test X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=6ec8c9064f53fb6c308cdcb547c83057ee0bf65e;p=scryer-prolog.git fix pstr_iter_tests test --- diff --git a/src/machine/heap.rs b/src/machine/heap.rs index c812b30b..d9f1aa88 100644 --- a/src/machine/heap.rs +++ b/src/machine/heap.rs @@ -687,16 +687,7 @@ impl Heap { } pub(crate) fn clear(&mut self) { - unsafe { - let layout = - alloc::Layout::from_size_align(self.inner.byte_cap, size_of::()) - .unwrap(); - alloc::dealloc(self.inner.ptr, layout); - } - - self.inner.ptr = ptr::null_mut(); - self.inner.byte_len = 0; - self.inner.byte_cap = 0; + *self = Heap::new(); } pub(crate) fn store_resource_error(&mut self) { diff --git a/src/machine/partial_string.rs b/src/machine/partial_string.rs index 977c421c..80c3c9af 100644 --- a/src/machine/partial_string.rs +++ b/src/machine/partial_string.rs @@ -217,6 +217,8 @@ mod test { fn pstr_iter_tests() { let mut wam = MockWAM::new(); + let init_len = wam.machine_st.heap.cell_len(); + let pstr_cell = wam.machine_st.heap.allocate_pstr("abc ").unwrap(); wam.machine_st .heap @@ -233,7 +235,7 @@ mod test { assert_eq!( iter.next(), Some(PStrIteratee::PStrSlice { - slice_loc: heap_index!(1), + slice_loc: heap_index!(init_len), slice_len: "abc ".len() }), ); @@ -241,9 +243,9 @@ mod test { assert!(!iter.is_cyclic()); } - assert_eq!(wam.machine_st.heap[2], empty_list_as_cell!()); + assert_eq!(wam.machine_st.heap[init_len + 1], empty_list_as_cell!()); - wam.machine_st.heap[2] = pstr_loc_as_cell!(heap_index!(3)); + wam.machine_st.heap[init_len + 1] = pstr_loc_as_cell!(heap_index!(init_len + 2)); wam.machine_st.heap.allocate_pstr("def").unwrap(); let h = wam.machine_st.heap.cell_len(); @@ -256,14 +258,14 @@ mod test { assert_eq!( iter.next(), Some(PStrIteratee::PStrSlice { - slice_loc: heap_index!(1), + slice_loc: heap_index!(init_len), slice_len: "abc ".len() }) ); assert_eq!( iter.next(), Some(PStrIteratee::PStrSlice { - slice_loc: heap_index!(3), + slice_loc: heap_index!(init_len + 2), slice_len: "def".len(), }) ); @@ -282,14 +284,14 @@ mod test { assert_eq!( iter.next(), Some(PStrIteratee::PStrSlice { - slice_loc: heap_index!(1), + slice_loc: heap_index!(init_len), slice_len: "abc ".len() }) ); assert_eq!( iter.next(), Some(PStrIteratee::PStrSlice { - slice_loc: heap_index!(3), + slice_loc: heap_index!(init_len + 2), slice_len: "def".len(), }) ); @@ -298,7 +300,7 @@ mod test { assert!(!iter.is_cyclic()); } - wam.machine_st.heap[h] = pstr_loc_as_cell!(heap_index!(3)); + wam.machine_st.heap[h] = pstr_loc_as_cell!(heap_index!(init_len + 2)); { let mut iter = HeapPStrIter::new(&wam.machine_st.heap, 0);