0.0.4-rc: fixed a bug in variable-size short field (rare situation and most often masked).

This commit is contained in:
sergeych committed 2023-10-07 01:50:26 +01:00
1 parent b7784fec18
commit e1c78e2bbb
4 files changed
+63 -5

No files matched your search

@@ -27,12 +27,15 @@ class BipackDecoder(
private var fixedSize = -1
private var fixedNumber = false
override val serializersModule: SerializersModule = EmptySerializersModule
override val serializersModule: SerializersModule = EmptySerializersModule()
override fun decodeBoolean(): Boolean = input.readByte().toInt() != 0
override fun decodeByte(): Byte = input.readByte()
override fun decodeShort(): Short =
if( fixedNumber ) input.readI16()
else if (nextIsUnsigned) input.readNumber<UInt>().toShort() else input.readNumber()
else if (nextIsUnsigned)
input.readNumber<UInt>().toShort()
else
input.readNumber()
override fun decodeInt(): Int =
if (fixedNumber) input.readI32()
else if (nextIsUnsigned) input.readNumber<UInt>().toInt() else input.readNumber()
@@ -28,15 +28,15 @@ class BipackEncoder(val output: DataSink) : AbstractEncoder() {
}
}
override val serializersModule: SerializersModule = EmptySerializersModule
override val serializersModule: SerializersModule = EmptySerializersModule()
override fun encodeBoolean(value: Boolean) = output.writeByte(if (value) 1 else 0)
override fun encodeByte(value: Byte) = output.writeByte(value.toInt())
override fun encodeShort(value: Short) =
if (fixedNumber) output.writeI16(value)
else if (nextIsUnsigned)
output.writeNumber(value.toUInt())
output.writeNumber(value.toUShort())
else
output.writeNumber(value.toInt())
output.writeNumber(value)
override fun encodeInt(value: Int) =
if (fixedNumber)