fix(networking): Correct length calculation for SMALL_STRING_TYPE in ByteBufReader

This commit is contained in:
2026-03-01 16:22:20 +01:00
parent 56ed60e532
commit ad9c22243a
2 changed files with 3 additions and 3 deletions

View File

@@ -132,7 +132,7 @@ public class ByteBufReader implements TweedDataReader {
if (specialEmbedType == ByteBufSerdeConstants.UINT6_TYPE) {
return wrapTokenForContext(new ByteToken((byte) (b & ByteBufSerdeConstants.SPECIAL_EMBED_VALUE_MASK)));
} 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);
return wrapTokenForContext(new StringToken(byteBuf.toString(StandardCharsets.UTF_8)));
}

View File

@@ -31,7 +31,7 @@ public class ByteBufReaderWriterTest {
writer.visitMapStart();
writer.visitMapEntryKey("first");
writer.visitNull();
writer.visitMapEntryKey("bytes");
writer.visitMapEntryKey("kind-of a_weird/key!");
writer.visitListStart();
writer.visitByte((byte) 12);
writer.visitByte((byte) -12);
@@ -58,7 +58,7 @@ public class ByteBufReaderWriterTest {
assertThat(reader.readToken()).extracting(TweedDataToken::isMapStart).isEqualTo(true);
assertNextMapKey(reader.readToken(), "first");
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);
assertByteToken(reader.readToken(), (byte) 12);
assertByteToken(reader.readToken(), (byte) -12);