Fix bug in the handling of element-subtree lazy result sets. non-regression-tests
authorKim Nguyễn <kn@lri.fr>
Fri, 19 Oct 2012 13:07:45 +0000 (15:07 +0200)
committerKim Nguyễn <kn@lri.fr>
Fri, 19 Oct 2012 13:07:45 +0000 (15:07 +0200)
src/nodeSet.ml

index b8979cc..c2265b2 100644 (file)
@@ -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 =