stop counters at counter underflow event
This commit is contained in:
parent
4d6cd779cb
commit
ff20a23e64
11
C/errors.c
11
C/errors.c
@ -518,20 +518,27 @@ Yap_Error(yap_error_number type, Term where, char *format,...)
|
|||||||
break;
|
break;
|
||||||
case CALL_COUNTER_UNDERFLOW:
|
case CALL_COUNTER_UNDERFLOW:
|
||||||
/* Do a long jump */
|
/* Do a long jump */
|
||||||
PredEntriesCounter--;
|
ReductionsCounterOn = FALSE;
|
||||||
|
PredEntriesCounterOn = FALSE;
|
||||||
|
RetriesCounterOn = FALSE;
|
||||||
Yap_JumpToEnv(MkAtomTerm(AtomCallCounter));
|
Yap_JumpToEnv(MkAtomTerm(AtomCallCounter));
|
||||||
P = (yamop *)FAILCODE;
|
P = (yamop *)FAILCODE;
|
||||||
Yap_PrologMode &= ~InErrorMode;
|
Yap_PrologMode &= ~InErrorMode;
|
||||||
return(P);
|
return(P);
|
||||||
case PRED_ENTRY_COUNTER_UNDERFLOW:
|
case PRED_ENTRY_COUNTER_UNDERFLOW:
|
||||||
/* Do a long jump */
|
/* Do a long jump */
|
||||||
|
ReductionsCounterOn = FALSE;
|
||||||
|
PredEntriesCounterOn = FALSE;
|
||||||
|
RetriesCounterOn = FALSE;
|
||||||
Yap_JumpToEnv(MkAtomTerm(AtomCallAndRetryCounter));
|
Yap_JumpToEnv(MkAtomTerm(AtomCallAndRetryCounter));
|
||||||
P = (yamop *)FAILCODE;
|
P = (yamop *)FAILCODE;
|
||||||
Yap_PrologMode &= ~InErrorMode;
|
Yap_PrologMode &= ~InErrorMode;
|
||||||
return(P);
|
return(P);
|
||||||
case RETRY_COUNTER_UNDERFLOW:
|
case RETRY_COUNTER_UNDERFLOW:
|
||||||
/* Do a long jump */
|
/* Do a long jump */
|
||||||
PredEntriesCounter--;
|
ReductionsCounterOn = FALSE;
|
||||||
|
PredEntriesCounterOn = FALSE;
|
||||||
|
RetriesCounterOn = FALSE;
|
||||||
Yap_JumpToEnv(MkAtomTerm(AtomRetryCounter));
|
Yap_JumpToEnv(MkAtomTerm(AtomRetryCounter));
|
||||||
P = (yamop *)FAILCODE;
|
P = (yamop *)FAILCODE;
|
||||||
Yap_PrologMode &= ~InErrorMode;
|
Yap_PrologMode &= ~InErrorMode;
|
||||||
|
Reference in New Issue
Block a user