File tree Expand file tree Collapse file tree 1 file changed +9
-12
lines changed Expand file tree Collapse file tree 1 file changed +9
-12
lines changed Original file line number Diff line number Diff line change @@ -81,15 +81,12 @@ func decodeXML(r io.Reader, v any) error {
8181 return nil
8282}
8383
84- func decompressGzip (r io.ReadCloser ) (io.ReadCloser , error ) {
85- nr , err := gzip .NewReader (r )
86- if err != nil {
87- return nil , err
88- }
89-
90- gz := & gzipReader {s : r , r : nr }
84+ var gzipPool = sync.Pool {New : func () any { return new (gzip.Reader ) }}
9185
92- return gz , nil
86+ func decompressGzip (r io.ReadCloser ) (io.ReadCloser , error ) {
87+ gr := gzipPool .Get ().(* gzip.Reader )
88+ err := gr .Reset (r )
89+ return & gzipReader {s : r , r : gr }, err
9390}
9491
9592type gzipReader struct {
@@ -102,7 +99,8 @@ func (gz *gzipReader) Read(p []byte) (n int, err error) {
10299}
103100
104101func (gz * gzipReader ) Close () error {
105- closeq (gz .r )
102+ gz .r .Reset (nopReader {})
103+ gzipPool .Put (gz .r )
106104 closeq (gz .s )
107105 return nil
108106}
@@ -125,9 +123,8 @@ func (d *deflateReader) Read(p []byte) (n int, err error) {
125123}
126124
127125func (d * deflateReader ) Close () error {
128- if err := d .r .(flate.Resetter ).Reset (nopReader {}, nil ); err == nil {
129- flatePool .Put (d .r )
130- }
126+ d .r .(flate.Resetter ).Reset (nopReader {}, nil )
127+ flatePool .Put (d .r )
131128 closeq (d .s )
132129 return nil
133130}
You can’t perform that action at this time.
0 commit comments