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) { 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)));
} }

View File

@@ -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);