From: Mark Thom Date: Thu, 7 Apr 2022 04:53:48 +0000 (-0600) Subject: detect immediately cyclic lists (#1384) X-Git-Tag: v0.9.1~71 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=4a6ffb6b9ee24d0357af2e09e116ca32fd7faf76;p=scryer-prolog.git detect immediately cyclic lists (#1384) --- diff --git a/src/heap_iter.rs b/src/heap_iter.rs index 21a65dbd..8c40d56a 100644 --- a/src/heap_iter.rs +++ b/src/heap_iter.rs @@ -167,7 +167,12 @@ impl<'a> StackfulPreOrderHeapIter<'a> { self.push_if_unmarked(vh); self.stack.push(IterStackLoc::iterable_heap_loc(vh + 1)); - forward_if_referent_marked(&mut self.heap, vh + 1); + + if self.heap[vh + 1].get_mark_bit() { + self.heap[vh + 1].set_forwarding_bit(true); + } else { + forward_if_referent_marked(&mut self.heap, vh + 1); + } self.stack.push(IterStackLoc::mark_heap_loc(vh)); forward_if_referent_marked(&mut self.heap, vh);