From 552af5455eccdea2b43d202fab3f6a8c637137a8 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 9 Jul 2014 19:29:34 +0200 Subject: decoder/dsdlib: use decoder_skip() Reduce duplicate code. --- src/decoder/plugins/DsdLib.cxx | 32 ++++++-------------------------- 1 file changed, 6 insertions(+), 26 deletions(-) (limited to 'src/decoder') diff --git a/src/decoder/plugins/DsdLib.cxx b/src/decoder/plugins/DsdLib.cxx index 03160deaa..c52c504e6 100644 --- a/src/decoder/plugins/DsdLib.cxx +++ b/src/decoder/plugins/DsdLib.cxx @@ -66,19 +66,7 @@ dsdlib_skip_to(Decoder *decoder, InputStream &is, if (uint64_t(is.GetOffset()) > offset) return false; - char buffer[8192]; - while (uint64_t(is.GetOffset()) < offset) { - size_t length = sizeof(buffer); - if (offset - is.GetOffset() < (uint64_t)length) - length = offset - is.GetOffset(); - - size_t nbytes = decoder_read(decoder, is, buffer, length); - if (nbytes == 0) - return false; - } - - assert(uint64_t(is.GetOffset()) == offset); - return true; + return dsdlib_skip(decoder, is, offset - is.GetOffset()); } /** @@ -94,20 +82,12 @@ dsdlib_skip(Decoder *decoder, InputStream &is, if (is.IsSeekable()) return is.Seek(is.GetOffset() + delta, IgnoreError()); - char buffer[8192]; - while (delta > 0) { - size_t length = sizeof(buffer); - if ((uint64_t)length > delta) - length = delta; - - size_t nbytes = decoder_read(decoder, is, buffer, length); - if (nbytes == 0) - return false; - - delta -= nbytes; - } + if (delta > 1024 * 1024) + /* don't skip more than one megabyte; it would be too + expensive */ + return false; - return true; + return decoder_skip(decoder, is, delta); } #ifdef HAVE_ID3TAG -- cgit v1.2.3