cleanup.go | 5 +++-- depfix.go | 1 + ood.go | 2 +- run.go | 8 ++++++++ sources.go | 2 +- targets.go | 4 ++-- diff --git a/cleanup.go b/cleanup.go index b9f47810a56524638bc709d8c3775639d042dfc2db157dbab7f40622c417015f..243b3002fc847e1ab4031f1234a2956f5709b6367592f018b2a73686e1b91ca0 100644 --- a/cleanup.go +++ b/cleanup.go @@ -52,6 +52,7 @@ dir, err := os.Open(root) if err != nil { return err } + defer dir.Close() for { fis, err := dir.Readdir(1 << 10) if err != nil { @@ -88,7 +89,7 @@ log.Fatalln("unknown cleanup target") } } } - return dir.Close() + return nil } func cleanupWalker(root, what string) error { @@ -147,5 +148,5 @@ } } } } - return dir.Close() + return nil } diff --git a/depfix.go b/depfix.go index c5bb1b3ae2d7d61782a4f58739c5e8cec5e294ce2a1df6735ed36bdcb19f80f4..eeebdf89a9179dad103406e3c5921b77588d58b59a49887dba6c37a1e7ec5562 100644 --- a/depfix.go +++ b/depfix.go @@ -123,6 +123,7 @@ return err } inode, err := inodeFromFile(fd) if err != nil { + fd.Close() return err } if inode.Size != theirInode.Size { diff --git a/ood.go b/ood.go index 5f9054caf1a0434ddd63d0f43ff86a87010b4be4a7eeb6310a1d6e033bba9f5d..82102533291d37a5fe093d5ef5995255711c58e911b829246edfd27821628fc3 100644 --- a/ood.go +++ b/ood.go @@ -188,7 +188,7 @@ goto Done } tracef(CDebug, "ood: %s%s -> %s: same hash", indent, tgtOrig, dep) } - fd.Close() // optimization not to hold it for long + fd.Close() if dep == tgt { tracef(CDebug, "ood: %s%s -> %s: same target", indent, tgtOrig, dep) diff --git a/run.go b/run.go index 37dc0c42c02ce2e1c9b0d4b06a6261909e03a10e2adc2f5f3f0d19b19d3180de..76d1427b0a4f03d2ad915794ef29d10aae638d427c65a77d8aa689bef81628cf 100644 --- a/run.go +++ b/run.go @@ -265,6 +265,7 @@ } Finish: if err != nil { err = TgtError{tgtOrig, err} + fdLock.Close() } errs <- err }() @@ -458,6 +459,9 @@ started := time.Now() runErr.Started = &started fdStdout, err = os.OpenFile(stdoutPath, os.O_RDWR, os.FileMode(0666)) if err != nil { + if fdStderr != nil { + fdStderr.Close() + } runErr.Err = err errs <- runErr return @@ -465,6 +469,10 @@ } cmd.Stdout = fdStdout fdDep, err = os.OpenFile(fdDepPath, os.O_WRONLY|os.O_APPEND, os.FileMode(0666)) if err != nil { + if fdStderr != nil { + fdStderr.Close() + } + fdStdout.Close() runErr.Err = err errs <- runErr return diff --git a/sources.go b/sources.go index b1a2934ecc217afedc37924d621f7ee1790e61665d9d9bf30ff471302dafc8ac..7e867e8877785ef8b0dbc860ffd89e834745a1e1e2f03c0f56ecf76f47a57a70 100644 --- a/sources.go +++ b/sources.go @@ -40,10 +40,10 @@ } return nil, err } depInfo, err := depRead(fdDep) + fdDep.Close() if err != nil { return nil, err } - fdDep.Close() for _, m := range depInfo.ifchanges { depTgt := m["Target"] depTgtAbsPath, err := filepath.Abs(path.Join(cwd, depTgt)) diff --git a/targets.go b/targets.go index 6f3105b398ab63619bb761ea20e76fd9b5fe87def0094d0587c48d162ad99eed..2dff0cb33ce494295ed968a9ee58f1a5c79c2ab5dd8d321e1e7afe03d94fdc3f 100644 --- a/targets.go +++ b/targets.go @@ -54,6 +54,7 @@ if err != nil { return err } redoFis, err := redoDir.Readdir(0) + redoDir.Close() if err != nil { return err } @@ -64,7 +65,6 @@ name = cwdMustRel(root, name) tgts[name[:len(name)-len(DepSuffix)]] = struct{}{} } } - redoDir.Close() } else { if err = targetsCollect(pth, tgts); err != nil { return err @@ -72,7 +72,7 @@ } } } } - return dir.Close() + return nil } func targetsWalker(tgts []string) ([]string, error) {