aboutsummaryrefslogtreecommitdiff
path: root/java/org/brotli/dec/Transform.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/org/brotli/dec/Transform.java')
-rw-r--r--java/org/brotli/dec/Transform.java35
1 files changed, 18 insertions, 17 deletions
diff --git a/java/org/brotli/dec/Transform.java b/java/org/brotli/dec/Transform.java
index 6a57a9e..15370cd 100644
--- a/java/org/brotli/dec/Transform.java
+++ b/java/org/brotli/dec/Transform.java
@@ -80,7 +80,7 @@ final class Transform {
int index = 1;
int j = 0;
for (int i = 0; i < n; ++i) {
- final char c = prefixSuffixSrc.charAt(i);
+ final int c = (int) prefixSuffixSrc.charAt(i);
if (c == 35) { // == #
prefixSuffixHeads[index++] = j;
} else {
@@ -89,7 +89,7 @@ final class Transform {
}
for (int i = 0; i < NUM_RFC_TRANSFORMS * 3; ++i) {
- transforms[i] = transformsSrc.charAt(i) - 32;
+ transforms[i] = (int) transformsSrc.charAt(i) - 32;
}
}
@@ -99,7 +99,7 @@ final class Transform {
}
static int transformDictionaryWord(byte[] dst, int dstOffset, ByteBuffer src, int srcOffset,
- int len, Transforms transforms, int transformIndex) {
+ int wordLen, Transforms transforms, int transformIndex) {
int offset = dstOffset;
final int[] triplets = transforms.triplets;
final byte[] prefixSuffixStorage = transforms.prefixSuffixStorage;
@@ -127,16 +127,17 @@ final class Transform {
dst[offset++] = prefixSuffixStorage[prefix++];
}
+ int len = wordLen;
// Copy trimmed word.
if (omitFirst > len) {
omitFirst = len;
}
- srcOffset += omitFirst;
+ int dictOffset = srcOffset + omitFirst;
len -= omitFirst;
len -= omitLast;
int i = len;
while (i > 0) {
- dst[offset++] = src.get(srcOffset++);
+ dst[offset++] = src.get(dictOffset++);
i--;
}
@@ -147,31 +148,31 @@ final class Transform {
len = 1;
}
while (len > 0) {
- final int c0 = dst[uppercaseOffset] & 0xFF;
+ final int c0 = (int) dst[uppercaseOffset] & 0xFF;
if (c0 < 0xC0) {
if (c0 >= 97 && c0 <= 122) { // in [a..z] range
- dst[uppercaseOffset] ^= (byte) 32;
+ dst[uppercaseOffset] = (byte) ((int) dst[uppercaseOffset] ^ 32);
}
uppercaseOffset += 1;
len -= 1;
} else if (c0 < 0xE0) {
- dst[uppercaseOffset + 1] ^= (byte) 32;
+ dst[uppercaseOffset + 1] = (byte) ((int) dst[uppercaseOffset + 1] ^ 32);
uppercaseOffset += 2;
len -= 2;
} else {
- dst[uppercaseOffset + 2] ^= (byte) 5;
+ dst[uppercaseOffset + 2] = (byte) ((int) dst[uppercaseOffset + 2] ^ 5);
uppercaseOffset += 3;
len -= 3;
}
}
} else if (transformType == SHIFT_FIRST || transformType == SHIFT_ALL) {
int shiftOffset = offset - len;
- final short param = transforms.params[transformIndex];
+ final int param = (int) transforms.params[transformIndex];
/* Limited sign extension: scalar < (1 << 24). */
int scalar = (param & 0x7FFF) + (0x1000000 - (param & 0x8000));
while (len > 0) {
int step = 1;
- final int c0 = dst[shiftOffset] & 0xFF;
+ final int c0 = (int) dst[shiftOffset] & 0xFF;
if (c0 < 0x80) {
/* 1-byte rune / 0sssssss / 7 bit scalar (ASCII). */
scalar += c0;
@@ -181,7 +182,7 @@ final class Transform {
} else if (c0 < 0xE0) {
/* 2-byte rune / 110sssss AAssssss / 11 bit scalar. */
if (len >= 2) {
- final byte c1 = dst[shiftOffset + 1];
+ final int c1 = (int) dst[shiftOffset + 1];
scalar += (c1 & 0x3F) | ((c0 & 0x1F) << 6);
dst[shiftOffset] = (byte) (0xC0 | ((scalar >> 6) & 0x1F));
dst[shiftOffset + 1] = (byte) ((c1 & 0xC0) | (scalar & 0x3F));
@@ -192,8 +193,8 @@ final class Transform {
} else if (c0 < 0xF0) {
/* 3-byte rune / 1110ssss AAssssss BBssssss / 16 bit scalar. */
if (len >= 3) {
- final byte c1 = dst[shiftOffset + 1];
- final byte c2 = dst[shiftOffset + 2];
+ final int c1 = (int) dst[shiftOffset + 1];
+ final int c2 = (int) dst[shiftOffset + 2];
scalar += (c2 & 0x3F) | ((c1 & 0x3F) << 6) | ((c0 & 0x0F) << 12);
dst[shiftOffset] = (byte) (0xE0 | ((scalar >> 12) & 0x0F));
dst[shiftOffset + 1] = (byte) ((c1 & 0xC0) | ((scalar >> 6) & 0x3F));
@@ -205,9 +206,9 @@ final class Transform {
} else if (c0 < 0xF8) {
/* 4-byte rune / 11110sss AAssssss BBssssss CCssssss / 21 bit scalar. */
if (len >= 4) {
- final byte c1 = dst[shiftOffset + 1];
- final byte c2 = dst[shiftOffset + 2];
- final byte c3 = dst[shiftOffset + 3];
+ final int c1 = (int) dst[shiftOffset + 1];
+ final int c2 = (int) dst[shiftOffset + 2];
+ final int c3 = (int) dst[shiftOffset + 3];
scalar += (c3 & 0x3F) | ((c2 & 0x3F) << 6) | ((c1 & 0x3F) << 12) | ((c0 & 0x07) << 18);
dst[shiftOffset] = (byte) (0xF0 | ((scalar >> 18) & 0x07));
dst[shiftOffset + 1] = (byte) ((c1 & 0xC0) | ((scalar >> 12) & 0x3F));