Skip to content

Commit 8c4e037

Browse files
majdanjiuzhe
andauthored
fix: close ZIP entry readers during replication (#469)
Co-authored-by: liqiang <1573335865@qq.com>
1 parent 4142ab4 commit 8c4e037

1 file changed

Lines changed: 19 additions & 11 deletions

File tree

pkg/appstore/appstore_replicate_sinf.go

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -135,21 +135,29 @@ func (t *appstore) replicateSinfFromInfo(info packageInfo, zip *zip.Writer, sinf
135135

136136
func (t *appstore) replicateZip(src *zip.ReadCloser, dst *zip.Writer) error {
137137
for _, file := range src.File {
138-
srcFile, err := file.OpenRaw()
139-
if err != nil {
140-
return fmt.Errorf("failed to open raw file: %w", err)
141-
}
138+
err := func() error {
139+
srcFile, err := file.Open()
140+
if err != nil {
141+
return fmt.Errorf("failed to open file: %w", err)
142+
}
143+
defer srcFile.Close()
142144

143-
header := file.FileHeader
144-
dstFile, err := dst.CreateRaw(&header)
145+
header := file.FileHeader
146+
dstFile, err := dst.CreateHeader(&header)
145147

146-
if err != nil {
147-
return fmt.Errorf("failed to create raw file: %w", err)
148-
}
148+
if err != nil {
149+
return fmt.Errorf("failed to create file: %w", err)
150+
}
151+
152+
_, err = io.Copy(dstFile, srcFile)
153+
if err != nil {
154+
return fmt.Errorf("failed to copy file: %w", err)
155+
}
149156

150-
_, err = io.Copy(dstFile, srcFile)
157+
return nil
158+
}()
151159
if err != nil {
152-
return fmt.Errorf("failed to copy file: %w", err)
160+
return err
153161
}
154162
}
155163

0 commit comments

Comments
 (0)