From 4af7c3a70968dc1f2318652c372113d4df22d18b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 20 Nov 2013 13:44:06 -0400 Subject: avoid crash on bad file encoding --- Git/Repair.hs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Git/Repair.hs b/Git/Repair.hs index c5ec40b..8b1b8ab 100644 --- a/Git/Repair.hs +++ b/Git/Repair.hs @@ -246,7 +246,8 @@ removeTrackingBranches missing goodcommits r = getAllRefs :: Repo -> IO [Ref] getAllRefs r = do packedrs <- mapMaybe parsePacked . lines - <$> catchDefaultIO "" (readFile $ packedRefsFile r) + <$> catchDefaultIO "" + (readFileStrictAnyEncoding $ packedRefsFile r) loosers <- map toref <$> dirContentsRecursive refdir return $ packedrs ++ loosers where @@ -276,7 +277,7 @@ nukeBranchRef b r = void $ usegit <||> byhand nukeFile $ localGitDir r show b whenM (doesFileExist packedrefs) $ withTmpFile "packed-refs" $ \tmp h -> do - ls <- lines <$> readFile packedrefs + ls <- lines <$> readFileStrictAnyEncoding packedrefs hPutStr h $ unlines $ filter (not . skiprefline) ls hClose h @@ -455,7 +456,7 @@ displayList items header preRepair :: Repo -> IO () preRepair g = do void $ tryIO $ allowRead headfile - unlessM (validhead <$> catchDefaultIO "" (readFile headfile)) $ do + unlessM (validhead <$> catchDefaultIO "" (readFileStrictAnyEncoding headfile)) $ do nukeFile headfile writeFile headfile "ref: refs/heads/master" where -- cgit v1.2.3