diff --git a/library/core/src/androidTest/java/com/google/android/exoplayer2/util/ParsableBitArrayTest.java b/library/core/src/androidTest/java/com/google/android/exoplayer2/util/ParsableBitArrayTest.java index fc8318d826..d7b2b36740 100644 --- a/library/core/src/androidTest/java/com/google/android/exoplayer2/util/ParsableBitArrayTest.java +++ b/library/core/src/androidTest/java/com/google/android/exoplayer2/util/ParsableBitArrayTest.java @@ -87,9 +87,13 @@ public final class ParsableBitArrayTest extends TestCase { result[1] = 0; testArray.readBits(result, 1, 0); assertEquals(0, result[1]); + // Test reading a number of bits divisible by 8. + testArray.setPosition(0); + testArray.readBits(result, 0, 16); + assertEquals(TEST_DATA[0], result[0]); + assertEquals(TEST_DATA[1], result[1]); // Test least significant bits are unmodified. result[1] = (byte) 0xFF; - testArray.setPosition(16); testArray.readBits(result, 0, 9); assertEquals(0x5F, result[0]); assertEquals(0x7F, result[1]); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/util/ParsableBitArray.java b/library/core/src/main/java/com/google/android/exoplayer2/util/ParsableBitArray.java index e0238cb14d..fdee7fb5e6 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/util/ParsableBitArray.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/util/ParsableBitArray.java @@ -192,6 +192,9 @@ public final class ParsableBitArray { } // Trailing bits. int bitsLeft = numBits & 7 /* numBits % 8 */; + if (bitsLeft == 0) { + return; + } buffer[to] &= 0xFF >> bitsLeft; // Set to 0 the bits that are going to be overwritten. if (bitOffset + bitsLeft > 8) { // We read the rest of data[byteOffset] and increase byteOffset.