From 777917de4d727be8a09b4c0eb47dc443aba550c6 Mon Sep 17 00:00:00 2001 From: jnz Date: Tue, 5 Nov 2024 14:19:30 +0800 Subject: [PATCH] fix: fix memory leak --- apk/apk.go | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) 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)