aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/inputPlugins/mp3_plugin.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/inputPlugins/mp3_plugin.c b/src/inputPlugins/mp3_plugin.c
index 7838624ab..b20118da4 100644
--- a/src/inputPlugins/mp3_plugin.c
+++ b/src/inputPlugins/mp3_plugin.c
@@ -835,15 +835,17 @@ static int mp3Read(mp3DecodeData * data, OutputBuffer * cb, DecoderControl * dc,
for (i = 0; i < (data->synth).pcm.length; i++) {
mpd_sint16 *sample;
+ samplesLeft--;
+
if (!data->decodedFirstFrame &&
(i < data->dropSamplesAtStart)) {
continue;
} else if (data->dropSamplesAtEnd &&
- (data->currentFrame == (data->maxFrames - data->dropFramesAtEnd))) {
- samplesLeft--;
- /* stop decoding, since samples were dropped */
- if (samplesLeft < data->dropSamplesAtEnd)
- return DECODE_BREAK;
+ (data->currentFrame == (data->maxFrames - data->dropFramesAtEnd)) &&
+ (samplesLeft < data->dropSamplesAtEnd)) {
+ /* stop decoding, effectively dropping
+ * all remaining samples */
+ return DECODE_BREAK;
}
sample = (mpd_sint16 *) data->outputPtr;