summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2021-02-07 21:24:47 +0100
committerMax Kellermann <max@musicpd.org>2021-02-07 21:38:13 +0100
commit4be76f3c8fd45b2bcbea661e69cf4f53588de88d (patch)
tree4cb406579d644d997fa054b6c98228d8c1faf923 /src
parentc58c53293c28f3cfd5f3e37d9833887a64dba5c4 (diff)
archive/iso9660: check "skip==0" before doing optimized large read
After a Seek() to an odd offset, some data needs to be skipped from the start of the block, and reading right into the given buffer doesn't work.
Diffstat (limited to 'src')
-rw-r--r--src/archive/plugins/Iso9660ArchivePlugin.cxx2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/archive/plugins/Iso9660ArchivePlugin.cxx b/src/archive/plugins/Iso9660ArchivePlugin.cxx
index f0123e58f..56bf15c28 100644
--- a/src/archive/plugins/Iso9660ArchivePlugin.cxx
+++ b/src/archive/plugins/Iso9660ArchivePlugin.cxx
@@ -266,7 +266,7 @@ Iso9660InputStream::Read(std::unique_lock<Mutex> &,
const lsn_t read_lsn = lsn + offset / ISO_BLOCKSIZE;
- if (read_size >= ISO_BLOCKSIZE) {
+ if (read_size >= ISO_BLOCKSIZE && skip == 0) {
/* big read - read right into the caller's buffer */
auto nbytes = iso->SeekRead(ptr, read_lsn,