From fd97b84916c8741bc925aed53c6e9a8ed26e29f0 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Sun, 23 Oct 2022 16:30:41 -0600 Subject: [PATCH] build partial strings using PStrLoc in write_term_to_heap (#1627) --- src/read.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/read.rs b/src/read.rs index b4176c55..c8743c2f 100644 --- a/src/read.rs +++ b/src/read.rs @@ -390,6 +390,12 @@ impl<'a, 'b> TermWriter<'a, 'b> { put_complete_string(self.heap, src.as_str(), self.atom_tbl); } &TermRef::PartialString(lvl, _, ref src, _) => { + if let Level::Root = lvl { + // Var tags can't refer directly to partial strings, + // so a PStrLoc cell must be pushed. + self.heap.push(pstr_loc_as_cell!(heap_loc + 1)); + } + allocate_pstr(self.heap, src.as_str(), self.atom_tbl); let h = self.heap.len(); -- 2.54.0