From ace0f055074a6ecee0f9893d545f0ff6f7fc3c45 Mon Sep 17 00:00:00 2001 From: Michael Muré Date: Wed, 11 Jan 2023 14:22:28 +0100 Subject: properly close files in edge cases in various places --- commands/select/select.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'commands') diff --git a/commands/select/select.go b/commands/select/select.go index 694d636a..cd12250e 100644 --- a/commands/select/select.go +++ b/commands/select/select.go @@ -3,7 +3,6 @@ package _select import ( "fmt" "io" - "io/ioutil" "os" "path/filepath" @@ -101,6 +100,7 @@ func Select(repo *cache.RepoCache, namespace string, id entity.Id) error { _, err = f.Write([]byte(id.String())) if err != nil { + _ = f.Close() return err } @@ -124,11 +124,18 @@ func selected[CacheT cache.CacheEntity](repo *cache.RepoCache, resolver Resolver } } - buf, err := ioutil.ReadAll(io.LimitReader(f, 100)) + buf, err := io.ReadAll(io.LimitReader(f, 100)) if err != nil { + _ = f.Close() return nil, err } - if len(buf) == 100 { + + err = f.Close() + if err != nil { + return nil, err + } + + if len(buf) >= 100 { return nil, fmt.Errorf("the select file should be < 100 bytes") } @@ -147,10 +154,5 @@ func selected[CacheT cache.CacheEntity](repo *cache.RepoCache, resolver Resolver return nil, err } - err = f.Close() - if err != nil { - return nil, err - } - return &cached, nil } -- cgit