dest_lte = clone_lookup_table_entry(src_lte);
if (!dest_lte)
return WIMLIB_ERR_NOMEM;
- list_add_tail(&dest_lte->new_stream_list,
+ list_add_tail(&dest_lte->export_stream_list,
lte_list_head);
}
}
list_del(next);
dest_lte = container_of(next,
struct wim_lookup_table_entry,
- new_stream_list);
+ export_stream_list);
dest_lte->part_number = 1;
dest_lte->refcnt = 0;
wimlib_assert(hashes_equal(dest_lte->hash, src_lte->hash));
if (ret)
return ret;
+ ret = wim_checksum_unhashed_streams(src_wim);
+ if (ret)
+ return ret;
+ ret = wim_checksum_unhashed_streams(dest_wim);
+ if (ret)
+ return ret;
+
if (num_additional_swms) {
ret = new_joined_lookup_table(src_wim, additional_swms,
num_additional_swms,
/* The `struct image_metadata' is now referenced by both the @src_wim
* and the @dest_wim. */
src_imd->refcnt++;
+ src_imd->modified = 1;
/* All memory allocations have been taken care of, so it's no longer
* possible for this function to fail. Go ahead and update the lookup
if (export_flags & WIMLIB_EXPORT_FLAG_BOOT)
dest_wim->hdr.boot_idx = dest_wim->hdr.image_count;
+ if (src_wim->hdr.flags & WIM_HDR_FLAG_RP_FIX)
+ {
+ /* Set the reparse point fixup flag on the destination WIM if
+ * the flag is set on the source WIM. */
+ dest_wim->hdr.flags |= WIM_HDR_FLAG_RP_FIX;
+ }
ret = 0;
goto out;
out_xml_delete_image:
out_free_ltes:
{
struct wim_lookup_table_entry *lte, *tmp;
- list_for_each_entry_safe(lte, tmp, <e_list_head, new_stream_list)
+ list_for_each_entry_safe(lte, tmp, <e_list_head, export_stream_list)
free_lookup_table_entry(lte);
}
out: