X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fwrite.c;h=bcf282ba3fe882126e929b208baa593c426d402a;hp=e1a7d676ae3deb53af4e30a9b5606c6a2727f0d2;hb=1562bea589e9ef4039a04223bc9059f349316e3d;hpb=e21cd14930e77f6b6c74975fcbec8ce016771933 diff --git a/src/write.c b/src/write.c index e1a7d676..bcf282ba 100644 --- a/src/write.c +++ b/src/write.c @@ -723,7 +723,7 @@ write_stream_uncompressed(struct wim_lookup_table_entry *lte, if (filedes_seek(out_fd, begin_offset) == -1) return 0; - ret = extract_stream_to_fd(lte, out_fd, lte->size); + ret = extract_full_stream_to_fd(lte, out_fd); if (ret) { /* Error reading the uncompressed data. */ if (out_fd->offset == begin_offset && @@ -953,8 +953,6 @@ write_stream_process_chunk(const void *chunk, size_t size, void *_ctx) memcpy(&ctx->chunk_buf[ctx->chunk_buf_filled], chunkptr, bytes_consumed); - resized_chunk = ctx->chunk_buf; - chunkptr += bytes_consumed; ctx->cur_read_res_offset += bytes_consumed; ctx->chunk_buf_filled += bytes_consumed; @@ -1354,7 +1352,8 @@ write_stream_list(struct list_head *stream_list, ctx.write_resource_flags = write_resource_flags; ctx.filter_ctx = filter_ctx; - if (out_chunk_size != 0) { + if (out_ctype != WIMLIB_COMPRESSION_TYPE_NONE) { + wimlib_assert(out_chunk_size != 0); if (out_chunk_size <= STACK_MAX) { ctx.chunk_buf = alloca(out_chunk_size); } else { @@ -1502,7 +1501,7 @@ out_write_raw_copy_resources: &ctx.progress_data); out_destroy_context: - if (out_chunk_size > STACK_MAX) + if (out_ctype != WIMLIB_COMPRESSION_TYPE_NONE && out_chunk_size > STACK_MAX) FREE(ctx.chunk_buf); FREE(ctx.chunk_csizes); if (ctx.compressor)