Revert "ENV may not be in scope of catch in very special cases (eg, call counter)."
This reverts commit 15f9a68a35.
Botch!
			
			
This commit is contained in:
		
							
								
								
									
										15
									
								
								C/exec.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								C/exec.c
									
									
									
									
									
								
							| @@ -1570,6 +1570,7 @@ 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 */ | ||||
| @@ -1599,7 +1600,19 @@ JumpToEnv(Term t) { | ||||
|       siglongjmp(Yap_RestartEnv,1); | ||||
|     } | ||||
|     /* is it a continuation? */ | ||||
|   env = ENV = B->cp_env; | ||||
|     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); | ||||
|   /* 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]; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user