X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fregistry%2Fhelm_registry.ml;h=fd0df50136add3246c4e2f1aff7734fad05c0d7f;hb=0ef9250d71eacd6b1022194128e6acfb74d52aac;hp=64277415f7186984e929326c11bd6ef087c6d210;hpb=9da16ebf1736b345ef6f3c4d9e0c107ed049ba4e;p=helm.git diff --git a/helm/software/components/registry/helm_registry.ml b/helm/software/components/registry/helm_registry.ml index 64277415f..fd0df5013 100644 --- a/helm/software/components/registry/helm_registry.ml +++ b/helm/software/components/registry/helm_registry.ml @@ -201,7 +201,9 @@ let set_opt registry marshaller ~key ~value = let get_list registry unmarshaller key = try - List.map unmarshaller (get registry key) + let tmp = get registry key in + let rc = List.map unmarshaller tmp in + rc with Key_not_found _ -> [] (* FG *) @@ -209,10 +211,11 @@ let get_pair registry fst_unmarshaller snd_unmarshaller = get_typed registry (pair fst_unmarshaller snd_unmarshaller) let set_list registry marshaller ~key ~value = - Hashtbl.remove registry key; - List.iter - (fun v -> set' ~replace:false registry ~key ~value:(marshaller v)) - value + (* since ocaml hash table are crazy... *) + while Hashtbl.mem registry key do + Hashtbl.remove registry key + done; + List.iter (fun v -> set' registry ~key ~value:(marshaller v)) value type xml_tree = | Cdata of string