From 08627579fc052c1bfcc308ab191d3ac21e823124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Tue, 27 Jul 2010 17:27:47 +0100 Subject: [PATCH] try to maintain a valid ASP even after a longjmp to top-level --- C/exec.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/C/exec.c b/C/exec.c index a20eda539..5304ee807 100644 --- a/C/exec.c +++ b/C/exec.c @@ -948,10 +948,12 @@ p_pred_goal_expansion_on(void) { return PRED_GOAL_EXPANSION_ON; } + static int exec_absmi(int top) { int lval, out; + if (top && (lval = sigsetjmp (Yap_RestartEnv, 1)) != 0) { switch(lval) { case 1: @@ -965,6 +967,9 @@ exec_absmi(int top) restore_B(); /* H is not so important, because we're gonna backtrack */ restore_H(); + /* set stack */ + ASP = B; + Yap_StartSlots(); LOCK(SignalLock); CreepFlag = CalculateStackGap(); Yap_PrologMode = UserMode;