Fix bug where the Lvl2 Cache got corrupted upon resizing.
[SXSI/xpathcomp.git] / src / cache.ml
index 60301fe..dac1dbc 100644 (file)
@@ -1,5 +1,3 @@
-INCLUDE "trace.ml"
-
 let realloc l old_size new_size dummy =
   let l' = Array.create new_size dummy in
   for i = 0 to (min old_size new_size) - 1 do
@@ -30,11 +28,9 @@ struct
          Format.fprintf fmt "%s" "E")) a.line
 
   let add a i v =
-    TRACE("twopass", 2, __ "Before add (%i): %a\n%!" i print a);
     if a.offset == ~-1 then a.offset <- i;
     let offset = a.offset in
     let len = Array.length a.line in
-    let () =
     if i >= offset && i < offset + len then
       a.line.(i - offset) <- v
     else
@@ -58,8 +54,6 @@ struct
        narray.(i - offset) <- v;
        a.line <- narray
       end
-    in
-    TRACE("twopass", 2, __ "After add (%i): %a\n%!" i print a)
 
   let find a i =
     let offset = a.offset in
@@ -94,16 +88,15 @@ struct
 
 
   let add a i j v =
-    TRACE("twopass", 2, __ "Adding %i %i\n%!" i j);
     let line = Lvl1.find a i in
     if line == a.Lvl1.dummy then
       let nline = Lvl1.create 0 line.Lvl1.dummy in
-      TRACE("twopass", 2, __ "Reallocating\n%!");
       Lvl1.add a i nline;
       Lvl1.add nline j v
     else
       Lvl1.add line j v
 
+
   let find a i j =
     let v = Lvl1.find a i in
     if v == a.Lvl1.dummy then a.Lvl1.dummy.Lvl1.dummy
@@ -136,9 +129,9 @@ struct
   let add a i j k v =
     let line = Lvl1.find a i in
     if line == a.Lvl1.dummy then
-      let nline =  { line with Lvl1.offset = ~-1 } in
-      Lvl2.add nline j k v;
-      Lvl1.add a i nline
+      let nline =  Lvl1.create 0 line.Lvl1.dummy in
+      Lvl1.add a i nline;
+      Lvl2.add nline j k v
     else
       Lvl2.add line j k v