fix overflow handling in meta-calls.

This commit is contained in:
Vítor Santos Costa 2014-08-15 19:34:20 -05:00
parent f09e115106
commit f9a7741781

View File

@ -13695,6 +13695,7 @@ Yap_absmi(int inp)
/* fetch the module from PREG */ /* fetch the module from PREG */
mod = PREG->y_u.Osbmp.mod; mod = PREG->y_u.Osbmp.mod;
start_execute: start_execute:
/* place to cut to */
b_ptr = B; b_ptr = B;
/* we have mod, and ARG1 has the goal, let us roll */ /* we have mod, and ARG1 has the goal, let us roll */
/* Try to preserve the environment */ /* Try to preserve the environment */
@ -13837,7 +13838,7 @@ Yap_absmi(int inp)
goto execute_metacall; goto execute_metacall;
} }
/* execute, byt test first for interrupts */ /* execute, but test first for interrupts */
execute_end: execute_end:
/* code copied from call */ /* code copied from call */
#ifndef NO_CHECKING #ifndef NO_CHECKING
@ -13893,9 +13894,9 @@ Yap_absmi(int inp)
#ifdef SHADOW_S #ifdef SHADOW_S
Yap_REGS.S_ = SREG; Yap_REGS.S_ = SREG;
#endif #endif
saveregs(); saveregs_and_ycache();
d0 = interrupt_pexecute( pen PASS_REGS ); d0 = interrupt_pexecute( pen PASS_REGS );
setregs(); setregs_and_ycache();
#ifdef SHADOW_S #ifdef SHADOW_S
SREG = Yap_REGS.S_; SREG = Yap_REGS.S_;
#endif #endif