From: Mark Thom Date: Fri, 1 Apr 2022 00:18:04 +0000 (-0600) Subject: be aware of temporary variables of stackless iterator in term_variables (#1383) X-Git-Tag: v0.9.1~83 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=9177dbce7f64fbd37cb6ba0e38e7fb25f815a44e;p=scryer-prolog.git be aware of temporary variables of stackless iterator in term_variables (#1383) --- diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index 531f2436..aa70337e 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -4905,12 +4905,17 @@ impl Machine { let mut seen_set = IndexSet::new(); { + let orig_heap_len = self.machine_st.heap.len(); let mut iter = stackless_preorder_iter(&mut self.machine_st.heap, stored_v); while let Some(addr) = iter.next() { let addr = unmark_cell_bits!(addr); - if addr.is_var() { + if addr.is_var() && addr.get_value() < orig_heap_len { + // the length check is so we don't catalog + // temporary variables created by the iterator, + // that will be deleted when the iterator is + // dropped, into seen_set. seen_set.insert(addr); } }