Skip to content

Commit

Permalink
Add function scope to loop of files open to prevent to make defer que…
Browse files Browse the repository at this point in the history
…ue explosion
  • Loading branch information
tasuwo committed Aug 21, 2017
1 parent f17d0ff commit ae96c1c
Showing 1 changed file with 38 additions and 31 deletions.
69 changes: 38 additions & 31 deletions runtime.go
Expand Up @@ -663,46 +663,53 @@ func decompressArchive(src string) (string, error) {

for _, f := range r.File {

rc, err := f.Open()
if err != nil {
return dest, err
}
defer rc.Close()
err := func() error {
rc, err := f.Open()
if err != nil {
return err
}
defer rc.Close()

// Store filename/path for returning and using later on
fpath := filepath.Join(dest, f.Name)
filenames = append(filenames, fpath)
// Store filename/path for returning and using later on
fpath := filepath.Join(dest, f.Name)
filenames = append(filenames, fpath)

if f.FileInfo().IsDir() {
if f.FileInfo().IsDir() {

// Make Folder
os.MkdirAll(fpath, os.ModePerm)
// Make Folder
os.MkdirAll(fpath, os.ModePerm)

} else {
} else {

// Make File
var fdir string
if lastIndex := strings.LastIndex(fpath, string(os.PathSeparator)); lastIndex > -1 {
fdir = fpath[:lastIndex]
}
// Make File
var fdir string
if lastIndex := strings.LastIndex(fpath, string(os.PathSeparator)); lastIndex > -1 {
fdir = fpath[:lastIndex]
}

err = os.MkdirAll(fdir, os.ModePerm)
if err != nil {
log.Fatal(err)
return dest, err
}
f, err := os.OpenFile(
fpath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
if err != nil {
return dest, err
}
defer f.Close()
err = os.MkdirAll(fdir, os.ModePerm)
if err != nil {
return err
}
f, err := os.OpenFile(
fpath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
if err != nil {
return err
}
defer f.Close()

_, err = io.Copy(f, rc)
if err != nil {
return dest, err
_, err = io.Copy(f, rc)
if err != nil {
return err
}
}

return nil
}()

if err != nil {
log.Fatal(err)
return dest, err
}
}

Expand Down

0 comments on commit ae96c1c

Please sign in to comment.