From 2e0a8c6fea52321b74c04b41935b1e10dad7a503 Mon Sep 17 00:00:00 2001 From: aryehklein-rise Date: Mon, 15 Dec 2025 13:08:40 +0200 Subject: [PATCH 1/2] keep og code. --- ocf/codec.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ocf/codec.go b/ocf/codec.go index 8d0cab2..62bc64c 100644 --- a/ocf/codec.go +++ b/ocf/codec.go @@ -162,3 +162,14 @@ func (zstdCodec *ZStandardCodec) Encode(b []byte) []byte { defer zstdCodec.encoder.Reset(nil) return zstdCodec.encoder.EncodeAll(b, nil) } + +// Close closes the zstandard encoder and decoder, releasing resources. +func (zstdCodec *ZStandardCodec) Close() error { + if zstdCodec.decoder != nil { + zstdCodec.decoder.Close() + } + if zstdCodec.encoder != nil { + return zstdCodec.encoder.Close() + } + return nil +} From f25cd9f0fc6c9b4975f66379e5e726c4403c65cc Mon Sep 17 00:00:00 2001 From: aryehklein-rise Date: Mon, 15 Dec 2025 13:09:51 +0200 Subject: [PATCH 2/2] actually call the close. --- ocf/ocf.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/ocf/ocf.go b/ocf/ocf.go index 4a1030e..09d7a93 100644 --- a/ocf/ocf.go +++ b/ocf/ocf.go @@ -176,6 +176,14 @@ func (d *Decoder) Error() error { return d.reader.Error } +// Close releases codec resources. +func (d *Decoder) Close() error { + if c, ok := d.codec.(io.Closer); ok { + return c.Close() + } + return nil +} + func (d *Decoder) readBlock() int64 { _ = d.reader.Peek() if errors.Is(d.reader.Error, io.EOF) { @@ -496,9 +504,15 @@ func (e *Encoder) Flush() error { return e.writer.Error } -// Close closes the encoder, flushing the writer. +// Close closes the encoder, flushing the writer and releasing codec resources. func (e *Encoder) Close() error { - return e.Flush() + err := e.Flush() + if c, ok := e.codec.(io.Closer); ok { + if cerr := c.Close(); cerr != nil && err == nil { + err = cerr + } + } + return err } func (e *Encoder) writerBlock() error {