]> wimlib.net Git - wimlib/blobdiff - src/extract.c
extract_streams_from_pipe(): Fix
[wimlib] / src / extract.c
index fbe5458df1e3cff8af025e030e7cf05cf8c66b52..1907e699315e16e7c94029af63c4872b2e887af8 100644 (file)
@@ -1257,7 +1257,7 @@ extract_stream_instances(struct wim_lookup_table_entry *lte,
                        goto out_free_lte_tmp;
                }
                filedes_init(&fd, raw_fd);
-               ret = extract_wim_resource_to_fd(lte, &fd, lte->size);
+               ret = extract_stream_to_fd(lte, &fd, lte->size);
                if (filedes_close(&fd) && !ret)
                        ret = WIMLIB_ERR_WRITE;
                if (ret)
@@ -1446,6 +1446,9 @@ extract_streams_from_pipe(struct apply_ctx *ctx)
                {
                        lte_unbind_wim_resource_spec(found_lte);
                        lte_bind_wim_resource_spec(needed_lte, rspec);
+                       needed_lte->offset_in_res = found_lte->offset_in_res;
+                       needed_lte->flags = found_lte->flags;
+                       needed_lte->size = found_lte->size;
                        ret = extract_stream_instances(needed_lte, ctx, false);
                        lte_unbind_wim_resource_spec(needed_lte);
 
@@ -1541,7 +1544,7 @@ extract_dentry_to_stdout(struct wim_dentry *dentry)
                if (lte) {
                        struct filedes _stdout;
                        filedes_init(&_stdout, STDOUT_FILENO);
-                       ret = extract_wim_resource_to_fd(lte, &_stdout, lte->size);
+                       ret = extract_stream_to_fd(lte, &_stdout, lte->size);
                }
        }
        return ret;