(************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* let s = ensure_suffix s in raw_extern s (freeze ~marshallable:true)), (fun s -> let s = ensure_suffix s in let paths = Loadpath.get_paths () in unfreeze (with_magic_number_check (raw_intern paths) s); Library.overwrite_library_filenames s) (* Rollback. *) let with_heavy_rollback f h x = let st = freeze ~marshallable:false in try f x with reraise -> let e = h reraise in (unfreeze st; raise e) let without_rollback f h x = try f x with reraise -> raise (h reraise) let with_state_protection f x = let st = freeze ~marshallable:false in try let a = f x in unfreeze st; a with reraise -> (unfreeze st; raise reraise)