aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/klauspost/compress/flate/stateless.go
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2019-12-06 02:31:18 -0800
committerGitHub <noreply@github.com>2019-12-06 02:31:18 -0800
commit5c6eb1a94eb2688b28209997cbf18fa4aff97fe0 (patch)
tree9919e3d8fd5c7b5a8d6d625072bca2f672db3729 /vendor/github.com/klauspost/compress/flate/stateless.go
parent465e142bf28ed04e78c8b32c0ecef6fe72a38ecc (diff)
parent625a02a28616ee519f09f89da91f5d6a2e78f265 (diff)
downloadpodman-5c6eb1a94eb2688b28209997cbf18fa4aff97fe0.tar.gz
podman-5c6eb1a94eb2688b28209997cbf18fa4aff97fe0.tar.bz2
podman-5c6eb1a94eb2688b28209997cbf18fa4aff97fe0.zip
Merge pull request #4652 from containers/dependabot/go_modules/github.com/containers/storage-1.15.2
build(deps): bump github.com/containers/storage from 1.15.0 to 1.15.2
Diffstat (limited to 'vendor/github.com/klauspost/compress/flate/stateless.go')
-rw-r--r--vendor/github.com/klauspost/compress/flate/stateless.go16
1 files changed, 15 insertions, 1 deletions
diff --git a/vendor/github.com/klauspost/compress/flate/stateless.go b/vendor/github.com/klauspost/compress/flate/stateless.go
index 524ee0ae3..a47051197 100644
--- a/vendor/github.com/klauspost/compress/flate/stateless.go
+++ b/vendor/github.com/klauspost/compress/flate/stateless.go
@@ -3,6 +3,7 @@ package flate
import (
"io"
"math"
+ "sync"
)
const (
@@ -49,11 +50,24 @@ func NewStatelessWriter(dst io.Writer) io.WriteCloser {
return &statelessWriter{dst: dst}
}
+// bitWriterPool contains bit writers that can be reused.
+var bitWriterPool = sync.Pool{
+ New: func() interface{} {
+ return newHuffmanBitWriter(nil)
+ },
+}
+
// StatelessDeflate allows to compress directly to a Writer without retaining state.
// When returning everything will be flushed.
func StatelessDeflate(out io.Writer, in []byte, eof bool) error {
var dst tokens
- bw := newHuffmanBitWriter(out)
+ bw := bitWriterPool.Get().(*huffmanBitWriter)
+ bw.reset(out)
+ defer func() {
+ // don't keep a reference to our output
+ bw.reset(nil)
+ bitWriterPool.Put(bw)
+ }()
if eof && len(in) == 0 {
// Just write an EOF block.
// Could be faster...