mirror of
https://github.com/vbatts/go-mtree.git
synced 2024-12-22 13:56:30 +00:00
tar: explicitly close files after populateTree
Files don't close properly when `defer`ing inside a for loop, since the surrounding function is still iterating in a for loop. To fix this, just close the files explicitly after `populateTree()` in `readHeaders()` Signed-off-by: Stephen Chung <schung@redhat.com>
This commit is contained in:
parent
b0c1606133
commit
767d4bbb4b
1 changed files with 2 additions and 3 deletions
5
tar.go
5
tar.go
|
@ -93,9 +93,6 @@ func (ts *tarStream) readHeaders() {
|
|||
ts.pipeReader.CloseWithError(err)
|
||||
return
|
||||
}
|
||||
defer tmpFile.Close()
|
||||
defer os.Remove(tmpFile.Name())
|
||||
|
||||
// Alright, it's either file or directory
|
||||
encodedName, err := Vis(filepath.Base(hdr.Name))
|
||||
if err != nil {
|
||||
|
@ -175,6 +172,8 @@ func (ts *tarStream) readHeaders() {
|
|||
}
|
||||
}
|
||||
populateTree(&root, &e, hdr, ts)
|
||||
tmpFile.Close()
|
||||
os.Remove(tmpFile.Name())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue