aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/DecoderBuffer.cxx6
-rw-r--r--src/DecoderBuffer.hxx3
-rw-r--r--src/decoder/FaadDecoderPlugin.cxx11
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 7279d7107..9c8bdb6ef 100644
--- a/src/decoder/FaadDecoderPlugin.cxx
+++ b/src/decoder/FaadDecoderPlugin.cxx
@@ -81,7 +81,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;
}
@@ -108,10 +108,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;