]> Repositorios git - scryer-prolog.git/commitdiff
fix pstr_iter_tests test
authorSkgland <[email protected]>
Thu, 20 Nov 2025 22:08:46 +0000 (23:08 +0100)
committerBennet Bleßmann <[email protected]>
Thu, 20 Nov 2025 22:08:46 +0000 (23:08 +0100)
src/machine/heap.rs
src/machine/partial_string.rs

index c812b30bfd4e06e9d020272c16f00106de0597eb..d9f1aa88c0624d35a08381c7bde077f2ed715f18 100644 (file)
@@ -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::<HeapCellValue>())
-                    .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) {
index 977c421c55d4d89241ae08bf159e2a100bdcc607..80c3c9af8a51c2ab2722a8bf47fcf1c7ffde3c7a 100644 (file)
@@ -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);