aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/decoder/DsdiffDecoderPlugin.cxx9
1 files changed, 2 insertions, 7 deletions
diff --git a/src/decoder/DsdiffDecoderPlugin.cxx b/src/decoder/DsdiffDecoderPlugin.cxx
index dba921de5..5d9a679da 100644
--- a/src/decoder/DsdiffDecoderPlugin.cxx
+++ b/src/decoder/DsdiffDecoderPlugin.cxx
@@ -260,8 +260,7 @@ dsdiff_read_metadata_extra(Decoder *decoder, InputStream &is,
/* Now process all the remaining chunk headers in the stream
and record their position and size */
- const auto size = is.GetSize();
- while (is.GetOffset() < size) {
+ do {
uint64_t chunk_size = chunk_header->GetSize();
/* DIIN chunk, is directly followed by other chunks */
@@ -291,12 +290,8 @@ dsdiff_read_metadata_extra(Decoder *decoder, InputStream &is,
if (!dsdlib_skip(decoder, is, chunk_size))
break;
}
+ } while (dsdiff_read_chunk_header(decoder, is, chunk_header));
- if (is.GetOffset() < size) {
- if (!dsdiff_read_chunk_header(decoder, is, chunk_header))
- break;
- }
- }
/* done processing chunk headers, process tags if any */
#ifdef HAVE_ID3TAG