A patch is below.

julia

diff --git a/parsing_cocci/iso_compile.ml b/parsing_cocci/iso_compile.ml
index 5e39b9c..7921f44 100644
--- a/parsing_cocci/iso_compile.ml
+++ b/parsing_cocci/iso_compile.ml
@@ -52,7 +52,7 @@ let process_info l =
         let safe_add p pos =
           (* don't add pos var where a pos var is already present *)
           if Common.inter_set previously_used pos = [] then p::pos else pos in
-        let p =
+        let new_previously_used =
           if List.for_all (List.for_all (function e -> List.length e = 1)) a
           then
             let p = get_p() in
@@ -60,22 +60,23 @@ let process_info l =
               (List.iter
                  (List.iter (function (_,pos) -> pos := safe_add p !pos)))
               a;
-            [p]
+            p::previously_used
           else
             let all = r @ List.concat xs in
-            let rec find_first_available a = function
+            let rec find_first_available a previously_used = function
                 [] -> raise Not_found
               | (str,pos)::xs ->
                   if str = a && Common.inter_set previously_used !pos = []
                   then pos
-                  else find_first_available a xs in
+                  else find_first_available a previously_used xs in
             List.fold_left
               (function prev ->
                 function (str,pos) ->
                   if Common.inter_set previously_used !pos = []
                   then
                     try
-                      let entries = List.map (find_first_available str) all in
+                      let entries =
+                        List.map (find_first_available str prev) all in
                       let p = get_p() in
                       pos := p::!pos;
                       List.iter (function pos -> pos := p :: !pos) entries;
@@ -83,8 +84,8 @@ let process_info l =
                     with Not_found -> prev
                   (* otherwise already annotated *)
                   else prev)
-              [] f in
-        loop (p@previously_used) xs
+              previously_used f in
+        loop new_previously_used xs
      | _ -> failwith "bad iso" in
    loop l

_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to