unused: Fix crash when file names contain invalid utf8.

Was decoding the git-cat-file of the symlink target as utf8, but that can't
do, unix filenames are from the 70's and need this shiny disco
fileSystemEncoding.
This commit is contained in:
Joey Hess 2012-06-20 12:57:00 -04:00
parent ee2acd474f
commit dfccee2616
2 changed files with 5 additions and 4 deletions

View file

@ -10,8 +10,7 @@
module Command.Unused where module Command.Unused where
import qualified Data.Set as S import qualified Data.Set as S
import qualified Data.Text.Lazy as L import qualified Data.ByteString.Lazy as L
import qualified Data.Text.Lazy.Encoding as L
import Data.BloomFilter import Data.BloomFilter
import Data.BloomFilter.Easy import Data.BloomFilter.Easy
import Data.BloomFilter.Hash import Data.BloomFilter.Hash
@ -265,8 +264,9 @@ withKeysReferencedInGitRef a ref = do
go [] = noop go [] = noop
go (l:ls) go (l:ls)
| isSymLink (LsTree.mode l) = do | isSymLink (LsTree.mode l) = do
content <- L.decodeUtf8 <$> catFile ref (LsTree.file l) content <- encodeW8 . L.unpack
case fileKey (takeFileName $ L.unpack content) of <$> catFile ref (LsTree.file l)
case fileKey (takeFileName content) of
Nothing -> go ls Nothing -> go ls
Just k -> do Just k -> do
a k a k

1
debian/changelog vendored
View file

@ -4,6 +4,7 @@ git-annex (3.20120616) UNRELEASED; urgency=low
files and automatically annexes new files, etc, so you don't need files and automatically annexes new files, etc, so you don't need
to manually run git commands when manipulating files. to manually run git commands when manipulating files.
* Enable diskfree on kfreebsd, using statvfs. * Enable diskfree on kfreebsd, using statvfs.
* unused: Fix crash when key names contain invalid utf8.
-- Joey Hess <joeyh@debian.org> Tue, 12 Jun 2012 11:35:59 -0400 -- Joey Hess <joeyh@debian.org> Tue, 12 Jun 2012 11:35:59 -0400