ENV may not be in scope of catch in very special cases (eg, call counter).

This commit is contained in:
Vitor Santos Costa 2009-06-26 09:15:19 -05:00
parent ff20a23e64
commit 15f9a68a35

View File

@ -1570,7 +1570,6 @@ JumpToEnv(Term t) {
if (!(t = Yap_SaveTerm(t)))
return FALSE;
}
do {
/* find the first choicepoint that may be a catch */
while (B != NULL && B->cp_ap != pos) {
/* we are already doing a catch */
@ -1600,19 +1599,7 @@ JumpToEnv(Term t) {
siglongjmp(Yap_RestartEnv,1);
}
/* is it a continuation? */
env = B->cp_env;
while (env > ENV) {
ENV = ENV_Parent(ENV);
}
/* yes, we found it ! */
// while (env < ENV)
// env = ENV_Parent(env);
if (env == ENV) {
break;
}
/* oops, try next */
B = B->cp_b;
} while (TRUE);
env = ENV = B->cp_env;
/* step one environment above, otherwise we'll redo the original goal */
B->cp_cp = (yamop *)env[E_CP];
B->cp_env = (CELL *)env[E_E];