Skip to content

Commit

Permalink
feat: handle nil cases
Browse files Browse the repository at this point in the history
  • Loading branch information
danielvladco committed Feb 4, 2025
1 parent adb9b24 commit 01ab09c
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 5 deletions.
3 changes: 3 additions & 0 deletions pkg/serialization/codec/jam/decode.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
15 changes: 10 additions & 5 deletions pkg/serialization/codec/jam/encode.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ func (bw *byteWriter) marshal(in interface{}) error {
default:
return bw.handleReflectTypes(v)
}
return nil
}

func (bw *byteWriter) handleReflectTypes(in interface{}) error {
Expand All @@ -77,10 +76,16 @@ func (bw *byteWriter) handleReflectTypes(in interface{}) error {
case reflect.Array:
return bw.encodeArray(in)
case reflect.Slice:
if pk, ok := in.(ed25519.PublicKey); ok {
return bw.encodeEd25519PublicKey(pk)
switch v := in.(type) {
case ed25519.PublicKey:
return bw.encodeEd25519PublicKey(v)
case BitSequence:
return bw.encodeBits(v)
case []byte:
return bw.encodeBytes(v)
default:
return bw.encodeSlice(in)
}
return bw.encodeSlice(in)
case reflect.Map:
return bw.encodeMap(in)
default:
Expand Down Expand Up @@ -293,7 +298,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)
Expand Down

0 comments on commit 01ab09c

Please sign in to comment.