From: Kim Nguyễn Date: Fri, 19 Oct 2012 13:07:45 +0000 (+0200) Subject: Fix bug in the handling of element-subtree lazy result sets. X-Git-Url: http://git.nguyen.vg/gitweb/?p=SXSI%2Fxpathcomp.git;a=commitdiff_plain;h=5c37235963ddd5fbfcb6ab86c1f8ccb78d48f0f1 Fix bug in the handling of element-subtree lazy result sets. --- diff --git a/src/nodeSet.ml b/src/nodeSet.ml index b8979cc..c2265b2 100644 --- a/src/nodeSet.ml +++ b/src/nodeSet.ml @@ -122,13 +122,13 @@ module Mat : S with type t = Tree.node mat = if Tree.tag tree t == tag then t else Tree.tagged_descendant tree t tag - let fst_element tree t = +(* + let fst_element tree t = let tag = Tree.tag tree t in - let t = if Ptset.Int.mem tag - (Ptset.Int.remove Tag.document_node (Tree.element_tags tree)) - then t - else Tree.first_element tree t - in Tree.first_element tree t + if tag == Tag.document_node then + Tree.first_element tree t + else t +*) let element_fold f tree t acc = let rec loop node acc = @@ -138,17 +138,11 @@ module Mat : S with type t = Tree.node mat = let acc' = loop (Tree.first_element tree node) acc in loop (Tree.next_element tree node) acc' in - loop (fst_element tree t) acc + let t' = Tree.first_element tree t in loop t' acc let element_iter f tree t = - let rec loop node = - if node != Tree.nil then begin - f node; - loop (Tree.first_element tree node); - loop (Tree.next_element tree node) - end - in - let t' = fst_element tree t in loop t' + let newf = fun e () -> f e in + element_fold newf tree t () let tag_fold f tree t tag acc = let rec loop close node acc =