aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2024-09-05 23:47:08 -0400
committerJunio C Hamano <gitster@pobox.com>2024-09-06 08:02:26 -0700
commitd39cc7185e0c1529917c0407036c9b09a94dd5ee (patch)
tree95a759649360462760ed1350e421a953c08acb21
parent2e7b89e038c0c888acf61f1b4ee5a43d4dd5e94c (diff)
downloadgit-d39cc7185e0c1529917c0407036c9b09a94dd5ee.tar.xz
sparse-checkout: consolidate cleanup when writing patterns
In write_patterns_and_update(), we always need to free the pattern list before exiting the function. Rather than handling it manually when we return early, we can jump to an "out" label where cleanup happens. This let us drop one line, but also establishes a pattern we can use for other cleanup. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/sparse-checkout.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c
index 2604ab04df..dfefe609a1 100644
--- a/builtin/sparse-checkout.c
+++ b/builtin/sparse-checkout.c
@@ -343,9 +343,8 @@ static int write_patterns_and_update(struct pattern_list *pl)
result = update_working_directory(pl);
if (result) {
rollback_lock_file(&lk);
- clear_pattern_list(pl);
update_working_directory(NULL);
- return result;
+ goto out;
}
fp = xfdopen(fd, "w");
@@ -358,9 +357,9 @@ static int write_patterns_and_update(struct pattern_list *pl)
fflush(fp);
commit_lock_file(&lk);
+out:
clear_pattern_list(pl);
-
- return 0;
+ return result;
}
enum sparse_checkout_mode {