Files
squashfs/internal/decompress/zlib.go
T
2025-04-16 05:49:42 -05:00

33 lines
513 B
Go

package decompress
import (
"bytes"
"io"
"sync"
"github.com/klauspost/compress/zlib"
)
type Zlib struct {
pool sync.Pool
}
func NewZlib() *Zlib {
return &Zlib{}
}
func (z *Zlib) Decompress(data []byte) ([]byte, error) {
rdr := z.pool.Get()
defer z.pool.Put(rdr)
var err error
if rdr == nil {
rdr, err = zlib.NewReader(bytes.NewReader(data))
} else {
err = rdr.(zlib.Resetter).Reset(bytes.NewReader(data), nil)
}
if err != nil {
return nil, err
}
return io.ReadAll(rdr.(io.ReadCloser))
}