fix excessive trimming in C-interface for backtrackable predicates (obs from José Vieira).

This commit is contained in:
Vítor Manuel de Morais Santos Costa
2010-01-11 15:44:43 +00:00
parent e86a995dd2
commit 324833f84a
4 changed files with 5 additions and 5 deletions

View File

@@ -1027,13 +1027,14 @@ YAP_cut_up(void)
cut_pt = B->cp_b; cut_pt = B->cp_b;
CUT_prune_to(cut_pt); CUT_prune_to(cut_pt);
Yap_TrimTrail();
B = cut_pt; B = cut_pt;
} }
#else /* YAPOR */ #else
Yap_TrimTrail();
B = B->cp_b; /* cut_fail */ B = B->cp_b; /* cut_fail */
#endif #endif
HB = B->cp_h; /* cut_fail */ HB = B->cp_h; /* cut_fail */
Yap_TrimTrail();
RECOVER_B(); RECOVER_B();
} }

View File

@@ -387,7 +387,6 @@ static int p_trie_traverse_init(void) {
/* traverse trie */ /* traverse trie */
if (!(data = trie_traverse_init((TrEntry) YAP_IntOfTerm(arg_trie), (TrData) YAP_IntOfTerm(arg_init_ref)))) { if (!(data = trie_traverse_init((TrEntry) YAP_IntOfTerm(arg_trie), (TrData) YAP_IntOfTerm(arg_init_ref)))) {
printf("cut fail no init!!!\n");
YAP_cut_fail(); YAP_cut_fail();
return FALSE; return FALSE;
} }