diff --git a/pkg/serialization/codec/jam/decode.go b/pkg/serialization/codec/jam/decode.go index a7c763e..eb75dfe 100644 --- a/pkg/serialization/codec/jam/decode.go +++ b/pkg/serialization/codec/jam/decode.go @@ -478,6 +478,9 @@ func (br *byteReader) decodeBitsFixedLength(v *BitSequence, bytesLength uint) (e if _, err = br.Reader.Read(bb); err != nil { return err } + if bytesLength == 0 { + return nil + } *v = make(BitSequence, bytesLength*8) for i := range *v { mod := i % 8 diff --git a/pkg/serialization/codec/jam/encode.go b/pkg/serialization/codec/jam/encode.go index 8a22fa3..22fa877 100644 --- a/pkg/serialization/codec/jam/encode.go +++ b/pkg/serialization/codec/jam/encode.go @@ -293,7 +293,7 @@ func (bw *byteWriter) encodeBytes(b []byte) error { func (bw *byteWriter) encodeBits(bitSequence BitSequence) error { length := len(bitSequence) / 8 - if length%8 == 0 { + if length > 0 && length%8 == 0 { length += 1 } err := bw.encodeLength(length)