fix(networking): Correct length calculation for SMALL_STRING_TYPE in ByteBufReader
This commit is contained in:
@@ -132,7 +132,7 @@ public class ByteBufReader implements TweedDataReader {
|
|||||||
if (specialEmbedType == ByteBufSerdeConstants.UINT6_TYPE) {
|
if (specialEmbedType == ByteBufSerdeConstants.UINT6_TYPE) {
|
||||||
return wrapTokenForContext(new ByteToken((byte) (b & ByteBufSerdeConstants.SPECIAL_EMBED_VALUE_MASK)));
|
return wrapTokenForContext(new ByteToken((byte) (b & ByteBufSerdeConstants.SPECIAL_EMBED_VALUE_MASK)));
|
||||||
} else if (specialEmbedType == ByteBufSerdeConstants.SMALL_STRING_TYPE) {
|
} else if (specialEmbedType == ByteBufSerdeConstants.SMALL_STRING_TYPE) {
|
||||||
int length = (b & ByteBufSerdeConstants.VALUE_MASK) + 1;
|
int length = (b & ByteBufSerdeConstants.SPECIAL_EMBED_VALUE_MASK) + 1;
|
||||||
ByteBuf byteBuf = buf.readBytes(length);
|
ByteBuf byteBuf = buf.readBytes(length);
|
||||||
return wrapTokenForContext(new StringToken(byteBuf.toString(StandardCharsets.UTF_8)));
|
return wrapTokenForContext(new StringToken(byteBuf.toString(StandardCharsets.UTF_8)));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class ByteBufReaderWriterTest {
|
|||||||
writer.visitMapStart();
|
writer.visitMapStart();
|
||||||
writer.visitMapEntryKey("first");
|
writer.visitMapEntryKey("first");
|
||||||
writer.visitNull();
|
writer.visitNull();
|
||||||
writer.visitMapEntryKey("bytes");
|
writer.visitMapEntryKey("kind-of a_weird/key!");
|
||||||
writer.visitListStart();
|
writer.visitListStart();
|
||||||
writer.visitByte((byte) 12);
|
writer.visitByte((byte) 12);
|
||||||
writer.visitByte((byte) -12);
|
writer.visitByte((byte) -12);
|
||||||
@@ -58,7 +58,7 @@ public class ByteBufReaderWriterTest {
|
|||||||
assertThat(reader.readToken()).extracting(TweedDataToken::isMapStart).isEqualTo(true);
|
assertThat(reader.readToken()).extracting(TweedDataToken::isMapStart).isEqualTo(true);
|
||||||
assertNextMapKey(reader.readToken(), "first");
|
assertNextMapKey(reader.readToken(), "first");
|
||||||
assertThat(reader.readToken()).extracting(TweedDataToken::isNull).isEqualTo(true);
|
assertThat(reader.readToken()).extracting(TweedDataToken::isNull).isEqualTo(true);
|
||||||
assertNextMapKey(reader.readToken(), "bytes");
|
assertNextMapKey(reader.readToken(), "kind-of a_weird/key!");
|
||||||
assertThat(reader.readToken()).extracting(TweedDataToken::isListStart).isEqualTo(true);
|
assertThat(reader.readToken()).extracting(TweedDataToken::isListStart).isEqualTo(true);
|
||||||
assertByteToken(reader.readToken(), (byte) 12);
|
assertByteToken(reader.readToken(), (byte) 12);
|
||||||
assertByteToken(reader.readToken(), (byte) -12);
|
assertByteToken(reader.readToken(), (byte) -12);
|
||||||
|
|||||||
Reference in New Issue
Block a user