]> Repositorios git - scryer-prolog.git/commitdiff
check for stack variables in ground_test before iterating (#3048)
authorMark Thom <[email protected]>
Fri, 15 Aug 2025 04:21:32 +0000 (21:21 -0700)
committerMark Thom <[email protected]>
Fri, 15 Aug 2025 04:21:32 +0000 (21:21 -0700)
src/machine/machine_state_impl.rs

index 3f14253d03e2dde95b548b76da162885df5037fc..3de055e52366f59a1f98690b0c85bac78954b75b 100644 (file)
@@ -1193,9 +1193,13 @@ impl MachineState {
 
     // returns true on failure.
     pub fn ground_test(&mut self) -> bool {
-        let iter = eager_stackful_preorder_iter(&mut self.heap, self.registers[1]);
+        let term = self.store(self.deref(self.registers[1]));
 
-        for term in iter {
+        if term.is_stack_var() {
+            return true;
+        }
+
+        for term in eager_stackful_preorder_iter(&mut self.heap, term) {
             if term.is_var() {
                 return true;
             }