From ed688bcff04238ef21d9c5ef16ce815585d82bc7 Mon Sep 17 00:00:00 2001 From: ricroc Date: Tue, 26 Jul 2005 16:28:28 +0000 Subject: [PATCH] TABLING FIXED: cuts and batched scheduling git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1349 b08c6af1-5177-4d33-ba66-4b1c6b8b522a --- OPTYap/tab.macros.h | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/OPTYap/tab.macros.h b/OPTYap/tab.macros.h index 088f216d0..6ad09525a 100644 --- a/OPTYap/tab.macros.h +++ b/OPTYap/tab.macros.h @@ -5,7 +5,7 @@ Copyright: R. Rocha and NCC - University of Porto, Portugal File: tab.macros.h - version: $Id: tab.macros.h,v 1.15 2005-07-11 19:17:27 ricroc Exp $ + version: $Id: tab.macros.h,v 1.16 2005-07-26 16:28:28 ricroc Exp $ **********************************************************************/ @@ -517,11 +517,22 @@ void abolish_incomplete_subgoals(choiceptr prune_cp) { sg_fr = LOCAL_top_sg_fr; LOCAL_top_sg_fr = SgFr_next(sg_fr); LOCK(SgFr_lock(sg_fr)); - if (SgFr_first_answer(sg_fr) == SgFr_answer_trie(sg_fr)) /* yes answer --> complete */ + if (SgFr_first_answer(sg_fr) == SgFr_answer_trie(sg_fr)) { SgFr_state(sg_fr) = complete; - else + UNLOCK(SgFr_lock(sg_fr)); + } else { + ans_node_ptr node; SgFr_state(sg_fr) = start; - UNLOCK(SgFr_lock(sg_fr)); + free_answer_hash_chain(SgFr_hash_chain(sg_fr)); + SgFr_first_answer(sg_fr) = NULL; + SgFr_last_answer(sg_fr) = NULL; + SgFr_hash_chain(sg_fr) = NULL; + node = TrNode_child(SgFr_answer_trie(sg_fr)); + TrNode_child(SgFr_answer_trie(sg_fr)) = NULL; + UNLOCK(SgFr_lock(sg_fr)); + if (node) + free_answer_trie_branch(node); + } } return;