be aware of temporary variables of stackless iterator in term_variables (#1383)

This commit is contained in:
Mark Thom
2022-03-31 18:18:04 -06:00
parent 55a896367d
commit 9177dbce7f

View File

@@ -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);
}
}