From b9320c921af8d8d2ea3ea80c576ca1e4037af049 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Wed, 4 Jun 2014 22:19:18 -0500 Subject: [PATCH] Fix creating large solid blocks Dumb bug that only appeared when at least 4 GiB of data was being archived...! --- NEWS | 5 ++++- src/write.c | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 89157ebc..b703f8a6 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,10 @@ Only the most important changes more recent than version 0.6 are noted here. Version 1.7.0-BETA: - Improved compatibility with version 3584 WIM / ESD files. + Improved compatibility with version 3584 WIM / ESD files: + - Add support for reading and writing multiple solid blocks per + archive, which WIMGAPI/DISM can create when appending an image. + - Correctly create solid blocks larger than 4 GiB. Performance improvements, including for extraction. diff --git a/src/write.c b/src/write.c index 52178381..aa3585a7 100644 --- a/src/write.c +++ b/src/write.c @@ -451,7 +451,7 @@ begin_chunk_table(struct write_streams_ctx *ctx, u64 res_expected_size) reserve_size = expected_num_chunk_entries * get_chunk_entry_size(res_expected_size, 0 != (ctx->write_resource_flags & - WIM_RESHDR_FLAG_PACKED_STREAMS)); + WRITE_RESOURCE_FLAG_PACK_STREAMS)); if (ctx->write_resource_flags & WRITE_RESOURCE_FLAG_PACK_STREAMS) reserve_size += sizeof(struct alt_chunk_table_header_disk); memset(ctx->chunk_csizes, 0, reserve_size); @@ -499,7 +499,7 @@ end_chunk_table(struct write_streams_ctx *ctx, u64 res_actual_size, chunk_entry_size = get_chunk_entry_size(res_actual_size, 0 != (ctx->write_resource_flags & - WIM_RESHDR_FLAG_PACKED_STREAMS)); + WRITE_RESOURCE_FLAG_PACK_STREAMS)); typedef le64 __attribute__((may_alias)) aliased_le64_t; typedef le32 __attribute__((may_alias)) aliased_le32_t; -- 2.43.0