From eac9fabd4835cfde118ed402154952810450018c Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 6 Jan 2014 21:46:10 +0100 Subject: DecoderBuffer: add method _clear() --- src/DecoderBuffer.cxx | 6 ++++++ src/DecoderBuffer.hxx | 3 +++ src/decoder/FaadDecoderPlugin.cxx | 11 +++-------- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/DecoderBuffer.cxx b/src/DecoderBuffer.cxx index 6aad53cb2..0b326a6fd 100644 --- a/src/DecoderBuffer.cxx +++ b/src/DecoderBuffer.cxx @@ -82,6 +82,12 @@ decoder_buffer_is_full(const DecoderBuffer *buffer) return buffer->consumed == 0 && buffer->length == buffer->size; } +void +decoder_buffer_clear(DecoderBuffer *buffer) +{ + buffer->length = buffer->consumed = 0; +} + static void decoder_buffer_shift(DecoderBuffer *buffer) { diff --git a/src/DecoderBuffer.hxx b/src/DecoderBuffer.hxx index 92cc31aa4..70cf63faa 100644 --- a/src/DecoderBuffer.hxx +++ b/src/DecoderBuffer.hxx @@ -56,6 +56,9 @@ decoder_buffer_is_empty(const DecoderBuffer *buffer); bool decoder_buffer_is_full(const DecoderBuffer *buffer); +void +decoder_buffer_clear(DecoderBuffer *buffer); + /** * Read data from the input_stream and append it to the buffer. * diff --git a/src/decoder/FaadDecoderPlugin.cxx b/src/decoder/FaadDecoderPlugin.cxx index 35ff0f049..c783997ba 100644 --- a/src/decoder/FaadDecoderPlugin.cxx +++ b/src/decoder/FaadDecoderPlugin.cxx @@ -84,7 +84,7 @@ adts_find_frame(DecoderBuffer *buffer) const uint8_t *p = (const uint8_t *)memchr(data, 0xff, length); if (p == nullptr) { /* no marker - discard the buffer */ - decoder_buffer_consume(buffer, length); + decoder_buffer_clear(buffer); continue; } @@ -111,10 +111,7 @@ adts_find_frame(DecoderBuffer *buffer) /* not enough data; discard this frame to prevent a possible buffer overflow */ - data = (const uint8_t *) - decoder_buffer_read(buffer, &length); - if (data != nullptr) - decoder_buffer_consume(buffer, length); + decoder_buffer_clear(buffer); } continue; @@ -196,9 +193,7 @@ faad_song_duration(DecoderBuffer *buffer, InputStream &is) is.LockSeek(tagsize, SEEK_SET, IgnoreError()); - data = (const uint8_t *)decoder_buffer_read(buffer, &length); - if (data != nullptr) - decoder_buffer_consume(buffer, length); + decoder_buffer_clear(buffer); decoder_buffer_fill(buffer); return song_length; -- cgit v1.2.3