fix #3636
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, ubuntu-20.04) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, ubuntu-20.04) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, ubuntu-20.04) (push) Has been cancelled Details

This commit is contained in:
高铁 2025-07-16 14:02:33 +08:00
parent f4465aabb2
commit 0ed85605de
3 changed files with 15 additions and 7 deletions

View File

@ -80,7 +80,10 @@ final class JSONReaderASCII
if (offset < end && bytes[offset] == first) {
offset++;
} else if (offset + 4 < end
&& IOUtils.isNULL(bytes, offset)
&& bytes[offset] == 'n'
&& bytes[offset + 1] == 'u'
&& bytes[offset + 2] == 'l'
&& bytes[offset + 3] == 'l'
&& bytes[offset + 4] == first
) {
offset += 5;

View File

@ -3361,7 +3361,13 @@ class JSONReaderUTF8
boolValue = true;
valueType = JSON_TYPE_BOOL;
ch = offset == end ? EOI : bytes[offset++];
} else if (ch == 'f' && offset + 3 < end && IOUtils.isALSE(bytes, offset)) {
} else if (ch == 'f'
&& offset + 3 < end
&& bytes[offset] == 'a'
&& bytes[offset + 1] == 'l'
&& bytes[offset + 2] == 's'
&& bytes[offset + 3] == 'e'
) {
valid = true;
offset += 4;
boolValue = false;
@ -4699,7 +4705,10 @@ class JSONReaderUTF8
if (offset < end && bytes[offset] == first) {
offset++;
} else if (offset + 4 < end
&& IOUtils.isNULL(bytes, offset)
&& bytes[offset] == 'n'
&& bytes[offset + 1] == 'u'
&& bytes[offset + 2] == 'l'
&& bytes[offset + 3] == 'l'
&& bytes[offset + 4] == first
) {
offset += 5;

View File

@ -1291,10 +1291,6 @@ public class IOUtils {
return (d & 0xF) * 10 + (d >> 16);
}
public static boolean isNULL(byte[] buf, int pos) {
return UNSAFE.getInt(buf, ARRAY_BYTE_BASE_OFFSET + pos) == NULL_32;
}
public static boolean isALSE(byte[] buf, int pos) {
return UNSAFE.getInt(buf, ARRAY_BYTE_BASE_OFFSET + pos) == ALSE;
}