+ offset = w->hdr.lookup_table_res_entry.offset;
+ buf_entries_remaining = 0;
+ for (; num_entries != 0;
+ num_entries--, buf_entries_remaining--, disk_entry++)
+ {
+ if (buf_entries_remaining == 0) {
+ size_t entries_to_read, bytes_to_read;
+
+ entries_to_read = min(ARRAY_LEN(table_buf), num_entries);
+ bytes_to_read = entries_to_read * sizeof(struct wim_lookup_table_entry_disk);
+ if (full_pread(w->in_fd, table_buf,
+ bytes_to_read, offset) != bytes_to_read)
+ {
+ ERROR_WITH_ERRNO("Error reading lookup table "
+ "(offset=%"PRIu64")", offset);
+ ret = WIMLIB_ERR_READ;
+ goto out_free_lookup_table;
+ }
+ offset += bytes_to_read;
+ disk_entry = table_buf;
+ buf_entries_remaining = entries_to_read;
+ }