fix truncateFilePath edge case on windows

If the filepath starts with something that is not valid utf-8, it would
have returned "". And if the filepath was all non-valid utf-8, it would
also return "".
This commit is contained in:
Joey Hess 2025-01-30 16:51:42 -04:00
parent b596e3b177
commit 773115fd5f
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38

View file

@ -157,10 +157,13 @@ truncateFilePath n = toRawFilePath . reverse . go [] n
go coll cnt bs
| cnt <= 0 = coll
| otherwise = case S8.decode bs of
Just (c, x) | c /= S8.replacement_char ->
let x' = fromIntegral x
in if cnt - x' < 0
then coll
else go (c:coll) (cnt - x') (S8.drop 1 bs)
Just (c, x)
| c /= S8.replacement_char ->
let x' = fromIntegral x
in if cnt - x' < 0
then coll
else go (c:coll) (cnt - x') (S8.drop 1 bs)
| otherwise ->
go ('_':coll) (cnt - 1) (S8.drop 1 bs)
_ -> coll
#endif