Fix space leak in fsck and drop commands.
The space leak was somehow caused by this line: absfiles <- mapM absPath files I confess, I don't quite understand why this caused bad buffering, but apparently the whole pipeline from git-ls-files backed up at that point. Happily, rewriting the code to only get the cwd once and use a pure function to calculate absfiles clears it up, and should be a little more efficient in syscalls too.
This commit is contained in:
parent
5d75919561
commit
c1dc407941
4 changed files with 12 additions and 5 deletions
|
@ -449,9 +449,9 @@ checkAttr repo attr files = do
|
|||
-- top of the repo). But we're passed files relative to the current
|
||||
-- directory. Convert to absolute, and then convert the filenames
|
||||
-- in its output back to relative.
|
||||
absfiles <- mapM absPath files
|
||||
(_, s) <- pipeBoth "git" (toCommand params) $ join "\0" absfiles
|
||||
cwd <- getCurrentDirectory
|
||||
let absfiles = map (absPathFrom cwd) files
|
||||
(_, s) <- pipeBoth "git" (toCommand params) $ join "\0" absfiles
|
||||
return $ map (topair $ cwd++"/") $ lines s
|
||||
where
|
||||
params = gitCommandLine repo [Param "check-attr", Param attr, Params "-z --stdin"]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue