diff --git a/src/prolog/machine/copier.rs b/src/prolog/machine/copier.rs index 328c504a..51a56dd2 100644 --- a/src/prolog/machine/copier.rs +++ b/src/prolog/machine/copier.rs @@ -51,13 +51,16 @@ impl CopyTermState { } fn copied_list(&mut self, addr: usize) -> bool { - if let HeapCellValue::Addr(Addr::Lis(addr)) = self.target[addr].clone() { - if addr >= self.old_h { - *self.value_at_scan() = HeapCellValue::Addr(Addr::Lis(addr)); - self.scan += 1; - return true; + match self.target[addr].clone() { + HeapCellValue::Addr(Addr::Lis(addr)) | HeapCellValue::Addr(Addr::HeapCell(addr)) => { + if addr >= self.old_h { + *self.value_at_scan() = HeapCellValue::Addr(Addr::Lis(addr)); + self.scan += 1; + return true; + } } - } + _ => {} + }; false }