From 79edf7cce23098a94901e1b351dd2ab49d0e8049 Mon Sep 17 00:00:00 2001 From: kimvde Date: Wed, 8 Jan 2020 17:21:09 +0000 Subject: [PATCH] FlacExtractor: add condition for zero-length reads This improves readability by making clearer that reading no bytes from the input in readFrames() is an expected case if the buffer is full. PiperOrigin-RevId: 288711841 --- .../extractor/flac/FlacExtractor.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/extractor/flac/FlacExtractor.java b/library/core/src/main/java/com/google/android/exoplayer2/extractor/flac/FlacExtractor.java index 8c31bde2a2..79dd20065b 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/extractor/flac/FlacExtractor.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/extractor/flac/FlacExtractor.java @@ -256,15 +256,18 @@ public final class FlacExtractor implements Extractor { // Copy more bytes into the buffer. int currentLimit = buffer.limit(); - int bytesRead = - input.read( - buffer.data, /* offset= */ currentLimit, /* length= */ BUFFER_LENGTH - currentLimit); - boolean foundEndOfInput = bytesRead == C.RESULT_END_OF_INPUT; - if (!foundEndOfInput) { - buffer.setLimit(currentLimit + bytesRead); - } else if (buffer.bytesLeft() == 0) { - outputSampleMetadata(); - return Extractor.RESULT_END_OF_INPUT; + boolean foundEndOfInput = false; + if (currentLimit < BUFFER_LENGTH) { + int bytesRead = + input.read( + buffer.data, /* offset= */ currentLimit, /* length= */ BUFFER_LENGTH - currentLimit); + foundEndOfInput = bytesRead == C.RESULT_END_OF_INPUT; + if (!foundEndOfInput) { + buffer.setLimit(currentLimit + bytesRead); + } else if (buffer.bytesLeft() == 0) { + outputSampleMetadata(); + return Extractor.RESULT_END_OF_INPUT; + } } // Search for a frame.