summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2013-11-20 13:44:06 -0400
committerJoey Hess <joey@kitenet.net>2013-11-20 13:44:06 -0400
commit4af7c3a70968dc1f2318652c372113d4df22d18b (patch)
tree95cc60f082841ca6b6c6ad22bc06099b15704603
parent655fa61307f580c400072be12f9e5f3be3cef4a8 (diff)
downloadgit-repair-4af7c3a70968dc1f2318652c372113d4df22d18b.tar.gz
avoid crash on bad file encoding
-rw-r--r--Git/Repair.hs7
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