![dependabot[bot]](/assets/img/avatar_default.png)
Bumps [github.com/containerd/cgroups/v3](https://github.com/containerd/cgroups) from 3.0.2 to 3.0.3. - [Release notes](https://github.com/containerd/cgroups/releases) - [Commits](https://github.com/containerd/cgroups/compare/v3.0.2...v3.0.3) --- updated-dependencies: - dependency-name: github.com/containerd/cgroups/v3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
32 lines
812 B
Go
32 lines
812 B
Go
package internal
|
|
|
|
import (
|
|
"bytes"
|
|
"sync"
|
|
)
|
|
|
|
var bytesBufferPool = sync.Pool{
|
|
New: func() interface{} {
|
|
return new(bytes.Buffer)
|
|
},
|
|
}
|
|
|
|
// NewBuffer retrieves a [bytes.Buffer] from a pool an re-initialises it.
|
|
//
|
|
// The returned buffer should be passed to [PutBuffer].
|
|
func NewBuffer(buf []byte) *bytes.Buffer {
|
|
wr := bytesBufferPool.Get().(*bytes.Buffer)
|
|
// Reinitialize the Buffer with a new backing slice since it is returned to
|
|
// the caller by wr.Bytes() below. Pooling is faster despite calling
|
|
// NewBuffer. The pooled alloc is still reused, it only needs to be zeroed.
|
|
*wr = *bytes.NewBuffer(buf)
|
|
return wr
|
|
}
|
|
|
|
// PutBuffer releases a buffer to the pool.
|
|
func PutBuffer(buf *bytes.Buffer) {
|
|
// Release reference to the backing buffer.
|
|
*buf = *bytes.NewBuffer(nil)
|
|
bytesBufferPool.Put(buf)
|
|
}
|