# # patch "main.ml" # from [5fe68ce94e77ee1350c7822b4eb69e38cd5f94a5] # to [d28cf22acf96dbbc12206b6e4b3965bd39299617] # # patch "unidiff.ml" # from [268beb3104432d9e384bf1c5daa74f6735800d36] # to [adba6e0ccf2cd60de8b72a8a1126398839104791] # # patch "view.ml" # from [75181c9100572d94d6cca7e2e746179809e53bc4] # to [c9832d10fa8c7df2b6169cf5a6535b48bff583ad] # --- main.ml +++ main.ml @@ -48,8 +48,10 @@ try let db = Glib.Convert.filename_from_utf8 db_raw in match may_assoc "branch" options with - | None -> MTopt_db db - | Some branch -> MTopt_full (db, branch) + | Some branch when Glib.Utf8.validate branch -> + MTopt_full (db, branch) + | _ -> + MTopt_db db with Glib.Convert.Error _ -> MTopt_none --- unidiff.ml +++ unidiff.ml @@ -164,7 +164,7 @@ window#misc#show () -let replacement_char = '?' +let replacement_char = '\x7f' (* DEL *) let careful_convert_ascii o = let s = String.copy o in for i = 0 to String.length s - 1 do --- view.ml +++ view.ml @@ -266,8 +266,7 @@ (fun change -> let text = text_of_delta_type change in (* monotone uses UTF-8 internaly *) - assert (valid_utf8 text) ; - if text <> "" then + if valid_utf8 text && text <> "" then let row = m#append ~parent () in may (m#set ~row ~column:i.revision_c_type) @@ -401,8 +400,12 @@ (fun b -> let row = model#append () in (* branch names are UTF-8 compatible *) - assert (valid_utf8 b) ; - model#set ~row ~column (Glib.Markup.escape_text b)) + model#set ~row ~column + begin + if valid_utf8 b + then Glib.Markup.escape_text b + else "invalid branch name" + end) br) let set_branch { selector = s } b = @@ -1026,7 +1029,7 @@ let open_db v fname branch = (* fname should be in filesystem encoding, - branch shoud be UTF-8 *) + branch should be UTF-8 *) close v ; try let db = Database.open_db fname in