You mean I am right and it should be the other constant being used? Sorry, just wanting to confirm.
On Sun, Aug 6, 2017 at 2:40 PM, Chia-Ping Tsai <[email protected]> wrote: > According to the following code: > public ArrayBackedTag(byte tagType, byte[] tag) { > int tagLength = tag.length + TYPE_LENGTH_SIZE; > if (tagLength > MAX_TAG_LENGTH) { > throw new IllegalArgumentException( > "Invalid tag data being passed. Its length can not exceed " + > MAX_TAG_LENGTH); > } > length = TAG_LENGTH_SIZE + tagLength; > bytes = new byte[length]; > int pos = Bytes.putAsShort(bytes, 0, tagLength); > pos = Bytes.putByte(bytes, pos, tagType); > Bytes.putBytes(bytes, pos, tag, 0, tag.length); > this.type = tagType; > } > The layout of the byte array should be: > |tag legnth (2 bytes)|tag type(1 byte)|tag| > > It seems to me that the "bytes[offset + TYPE_LENGTH_SIZE]" is correct. > > On 2017-08-06 16:35, Lars George <[email protected]> wrote: >> Hi, >> >> I found this reading through tags in 1.3, but checked in trunk as >> well. There is this code: >> >> public ArrayBackedTag(byte[] bytes, int offset, int length) { >> if (length > MAX_TAG_LENGTH) { >> throw new IllegalArgumentException( >> "Invalid tag data being passed. Its length can not exceed " >> + MAX_TAG_LENGTH); >> } >> this.bytes = bytes; >> this.offset = offset; >> this.length = length; >> this.type = bytes[offset + TAG_LENGTH_SIZE]; >> } >> >> I am concerned about the last line of the code, using the wrong constant? >> >> public final static int TYPE_LENGTH_SIZE = Bytes.SIZEOF_BYTE; >> public final static int TAG_LENGTH_SIZE = Bytes.SIZEOF_SHORT; >> >> Should this not read >> >> this.type = bytes[offset + TYPE_LENGTH_SIZE]; >> >> Would this not read the type from the wrong place in the array? >> >> Cheers, >> Lars >>
