diff options
author | Joey Hess <joey@kitenet.net> | 2013-11-20 13:44:06 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-11-20 13:44:06 -0400 |
commit | 4af7c3a70968dc1f2318652c372113d4df22d18b (patch) | |
tree | 95cc60f082841ca6b6c6ad22bc06099b15704603 /Git | |
parent | 655fa61307f580c400072be12f9e5f3be3cef4a8 (diff) | |
download | git-repair-4af7c3a70968dc1f2318652c372113d4df22d18b.tar.gz |
avoid crash on bad file encoding
Diffstat (limited to 'Git')
-rw-r--r-- | Git/Repair.hs | 7 |
1 files 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 |