X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=components%2Fregistry%2Fhelm_registry.ml;h=fd0df50136add3246c4e2f1aff7734fad05c0d7f;hb=c02c88bdbeb81b379cc7d3e9c875a106a745f5ef;hp=64277415f7186984e929326c11bd6ef087c6d210;hpb=0c26b6560a42582bc634905884b148ca7bede3fb;p=helm.git diff --git a/components/registry/helm_registry.ml b/components/registry/helm_registry.ml index 64277415f..fd0df5013 100644 --- a/components/registry/helm_registry.ml +++ b/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