diff --git a/Annex/Locations.hs b/Annex/Locations.hs index 32113d94a1..bf6c7c18a9 100644 --- a/Annex/Locations.hs +++ b/Annex/Locations.hs @@ -531,8 +531,9 @@ fileKey = fileKey' . toRawFilePath fileKey' :: RawFilePath -> Maybe Key fileKey' = deserializeKey' . S8.intercalate "/" . map go . S8.split '%' where - go :: S8.ByteString -> S8.ByteString - go = S8.concat . map (unesc . S8.uncons) . S8.split '&' + go = S8.concat . go' . S8.split '&' + go' [] = [] + go' (b:bs) = b : map (unesc . S8.uncons) bs unesc :: Maybe (Char, S8.ByteString) -> S8.ByteString unesc Nothing = mempty unesc (Just ('c', b)) = S8.cons ':' b