]> wimlib.net Git - wimlib/blobdiff - src/write.c
read_utf8_file_contents(): Move check for BOM here
[wimlib] / src / write.c
index e1a7d676ae3deb53af4e30a9b5606c6a2727f0d2..bcf282ba3fe882126e929b208baa593c426d402a 100644 (file)
@@ -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)