make sure to save absmi registers before longjmp.
This commit is contained in:
parent
e6fb330f58
commit
6c98e37e18
@ -1822,6 +1822,9 @@ E);
|
||||
if (LOCAL_PrologMode & UserCCallMode) {
|
||||
if (!(EX = Yap_StoreTermInDB(Yap_MkApplTerm(fun, 2, nt), 0))) {
|
||||
/* fat chance */
|
||||
#if PUSH_REGS
|
||||
restore_absmi_regs(&Yap_standard_regs);
|
||||
#endif
|
||||
siglongjmp(LOCAL_RestartEnv,1);
|
||||
}
|
||||
} else {
|
||||
|
3
C/exec.c
3
C/exec.c
@ -1473,6 +1473,9 @@ JumpToEnv(Term t USES_REGS) {
|
||||
/* just keep the throwed object away, we don't need to care about it */
|
||||
if (!(LOCAL_BallTerm = Yap_StoreTermInDB(t, 0))) {
|
||||
/* fat chance */
|
||||
#if PUSH_REGS
|
||||
restore_absmi_regs(&Yap_standard_regs);
|
||||
#endif
|
||||
siglongjmp(LOCAL_RestartEnv,1);
|
||||
}
|
||||
/* careful, previous step may have caused a stack shift,
|
||||
|
3
C/qlyr.c
3
C/qlyr.c
@ -999,6 +999,9 @@ p_read_program( USES_REGS1 )
|
||||
/* back to the top level we go */
|
||||
Yap_CloseSlots(PASS_REGS1);
|
||||
|
||||
#if PUSH_REGS
|
||||
restore_absmi_regs(&Yap_standard_regs);
|
||||
#endif
|
||||
siglongjmp(LOCAL_RestartEnv, 3);
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1564,6 +1564,9 @@ InteractSIGINT(int ch) {
|
||||
/* in case someone mangles the P register */
|
||||
}
|
||||
LOCAL_PrologMode &= ~AsyncIntMode;
|
||||
#if PUSH_REGS
|
||||
restore_absmi_regs(&Yap_standard_regs);
|
||||
#endif
|
||||
siglongjmp(LOCAL_RestartEnv,1);
|
||||
return -1;
|
||||
case 'b':
|
||||
|
Reference in New Issue
Block a user