]> Repositorios git - scryer-prolog.git/commitdiff
tighten deallocate truncation of stack (#1686)
authorMark Thom <[email protected]>
Fri, 13 Jan 2023 06:46:57 +0000 (23:46 -0700)
committerMark Thom <[email protected]>
Fri, 13 Jan 2023 06:47:07 +0000 (23:47 -0700)
src/machine/machine_state_impl.rs

index 00e17649ce139db5041b27a3a724935cbebd88ab..a77fda726ea4a5f23697618fe0280ea750ba382b 100644 (file)
@@ -2784,8 +2784,11 @@ impl MachineState {
         self.cp = frame.prelude.cp;
         self.e = frame.prelude.e;
 
-        if e > self.b {
-            self.stack.truncate(e);
+        if self.e > self.b {
+            let frame = self.stack.index_and_frame(self.e);
+            let size = AndFrame::size_of(frame.prelude.univ_prelude.num_cells);
+
+            self.stack.truncate(self.e + size);
         }
 
         self.p += 1;