From a46043bcc4cc15b456ef1eac5c5f9d93bd905d53 Mon Sep 17 00:00:00 2001
From: Timo Teräs <timo.teras@iki.fi>
Date: Tue, 17 Aug 2021 13:53:01 +0300
Subject: extract: fix directory handling

'is' is null for directories
---
 src/app_extract.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

(limited to 'src')

diff --git a/src/app_extract.c b/src/app_extract.c
index 75034bf..7c3fa58 100644
--- a/src/app_extract.c
+++ b/src/app_extract.c
@@ -146,13 +146,14 @@ static int extract_file(struct apk_extract_ctx *ectx, const struct apk_file_info
 
 	apk_dbg2(out, "%s", fi->name);
 
-	if (fi->uvol_name) return apk_extract_volume(ectx->ac, fi, is);
-
-	r = apk_extract_file(ctx->root_fd, fi, 0, 0, is, 0, 0, 0,
-		ctx->extract_flags, &ectx->ac->out);
-	r = apk_istream_close_error(is, r);
-
-	if (r != 0) unlinkat(ctx->root_fd, fi->name, 0);
+	if (fi->uvol_name && is) {
+		r = apk_extract_volume(ectx->ac, fi, is);
+	} else {
+		r = apk_extract_file(ctx->root_fd, fi, 0, 0, is, 0, 0, 0,
+			ctx->extract_flags, &ectx->ac->out);
+		if (r != 0) unlinkat(ctx->root_fd, fi->name, 0);
+	}
+	if (is) r = apk_istream_close_error(is, r);
 	return r;
 }
 
-- 
cgit v1.2.3-70-g09d2