X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fsplit.c;h=c0557837beff4282a528f5c32f04ca816c828d78;hp=71b32cefe95ed31f60283b409e9851f12dacc6cd;hb=a8972bde4b080d2dd33a7500705d431b0f1fe901;hpb=650997e4865a090b6856c7ca34b02f42994e8e29 diff --git a/src/split.c b/src/split.c index 71b32cef..c0557837 100644 --- a/src/split.c +++ b/src/split.c @@ -119,7 +119,7 @@ copy_resource_to_swm(struct wim_lookup_table_entry *lte, void *__args) } args->size_remaining -= lte->resource_entry.size; args->progress.split.completed_bytes += lte->resource_entry.size; - list_add(<e->staging_list, &args->lte_list); + list_add_tail(<e->staging_list, &args->lte_list); return copy_resource(lte, w); } @@ -187,7 +187,6 @@ wimlib_split(WIMStruct *w, const tchar *swm_name, &args.progress); } - w->write_metadata = true; for (int i = 0; i < w->hdr.image_count; i++) { struct wim_lookup_table_entry *metadata_lte; metadata_lte = w->image_metadata[i].metadata_lte; @@ -196,12 +195,14 @@ wimlib_split(WIMStruct *w, const tchar *swm_name, goto out; args.size_remaining -= metadata_lte->resource_entry.size; args.progress.split.completed_bytes += metadata_lte->resource_entry.size; - list_add(&metadata_lte->staging_list, &args.lte_list); + /* Careful: The metadata lookup table entries must be added in + * order of the images. */ + list_add_tail(&metadata_lte->staging_list, &args.lte_list); } - w->write_metadata = false; - ret = for_lookup_table_entry(w->lookup_table, - copy_resource_to_swm, &args); + ret = for_lookup_table_entry_pos_sorted(w->lookup_table, + copy_resource_to_swm, + &args); if (ret != 0) goto out;