Merge branch 'v0.22.x'

This commit is contained in:
Max Kellermann
2021-02-07 22:04:07 +01:00
4 changed files with 23 additions and 7 deletions

View File

@@ -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,13 +260,13 @@ 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);
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,