keep track that we are exiting unbdefp handler, even if we exit with a throw.
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1250 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
		@@ -120,8 +120,6 @@ low_level_trace(yap_low_level_port port, PredEntry *pred, CELL *args)
 | 
			
		||||
  /*  extern int gc_calls; */
 | 
			
		||||
 | 
			
		||||
  vsc_count++;
 | 
			
		||||
  if (vsc_count < 3590LL)
 | 
			
		||||
    return;
 | 
			
		||||
#ifdef COMMENTED
 | 
			
		||||
  //  if (vsc_count == 218280)
 | 
			
		||||
  //    vsc_xstop = 1;
 | 
			
		||||
 
 | 
			
		||||
@@ -737,15 +737,18 @@ not(G) :-    \+ '$execute'(G).
 | 
			
		||||
	'$execute0'(NG,M).
 | 
			
		||||
'$do_undefp'(G,M) :-
 | 
			
		||||
	\+ '$undefined'(unknown_predicate_handler(_,_,_), user),
 | 
			
		||||
	'$system_catch'(unknown_predicate_handler(G,M,NG), user, _, fail), !,
 | 
			
		||||
	( once('$execute'(user:NG)) -> '$exit_undefp' ; '$exit_undefp', fail).
 | 
			
		||||
	( '$system_catch'(NG,user,Error,'$leave_undefp'(Error)) -> '$exit_undefp' ; '$exit_undefp', fail).
 | 
			
		||||
'$do_undefp'(G,M) :-
 | 
			
		||||
	recorded('$unknown','$unknown'(M:G,US),_), !,
 | 
			
		||||
	( once('$execute'(user:US)) -> '$exit_undefp' ; '$exit_undefp', fail).
 | 
			
		||||
	( '$system_catch'(US,user,Error,'$leave_undefp'(Error)) -> '$exit_undefp' ; '$exit_undefp', fail).
 | 
			
		||||
'$do_undefp'(_,_) :-
 | 
			
		||||
	'$exit_undefp',
 | 
			
		||||
	fail.
 | 
			
		||||
 | 
			
		||||
'$leave_undefp'(Ball) :-
 | 
			
		||||
	'$exit_undefp',
 | 
			
		||||
	throw(Ball).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* This is the break predicate,
 | 
			
		||||
	it saves the importante data about current streams and
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user