diff --git a/apk/apk.go b/apk/apk.go index 2ab61df..09d58b9 100644 --- a/apk/apk.go +++ b/apk/apk.go @@ -180,16 +180,23 @@ func (k *Apk) readZipFile(name string) (data []byte, err error) { if file.Name != name { continue } - rc, er := file.Open() - if er != nil { - err = er - return + + localFun := func() error { + rc, e := file.Open() + if e != nil { + return e + } + defer rc.Close() + if _, e = io.Copy(buf, rc); e != nil { + return e + } + return nil } - defer rc.Close() - _, err = io.Copy(buf, rc) - if err != nil { + + if err = localFun(); err != nil { return } + return buf.Bytes(), nil } return nil, fmt.Errorf("apk: file %q not found", name)