Commit e7da5b10 authored by Max Kellermann's avatar Max Kellermann

archive/iso9660: another fix for unaligned reads

Commit 79b23663 added the field `skip` to support unaligned reads, but set the `offset` field to a wrong value. This resulted in miscalculation of `remaining`, causing an assertion failure. The fix is to assign `offset` the correct value, but consider the `skip` value in the assertion. Closes https://github.com/MusicPlayerDaemon/MPD/issues/1067
parent 4be76f3c
ver 0.22.5 (not yet released)
* tags
- id: translate TPE3 to Conductor, not Performer
* archive
- iso9660: another fix for unaligned reads
* output
- httpd: error handling on Windows improved
......
......@@ -221,8 +221,8 @@ public:
if (new_offset > size)
throw std::runtime_error("Invalid seek offset");
offset = new_offset;
skip = new_offset % ISO_BLOCKSIZE;
offset = new_offset - skip;
buffer.Clear();
}
};
......@@ -260,7 +260,7 @@ Iso9660InputStream::Read(std::unique_lock<Mutex> &,
if (r.empty()) {
/* the buffer is empty - read more data from the ISO file */
assert(offset % ISO_BLOCKSIZE == 0);
assert((offset - skip) % ISO_BLOCKSIZE == 0);
const ScopeUnlock unlock(mutex);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment