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>

Jeff King committed Sep 5, 2024 at 23:47 UTC d39cc7185e0c1529917c0407036c9b09a94dd5ee
1 file changed +3 -4
builtin/sparse-checkout.c
+3 -4
@@ -343,9 +343,8 @@ static int write_patterns_and_update(struct pattern_list *pl)
343 result = update_working_directory(pl);
344 if (result) {
345 rollback_lock_file(&lk);
346 - clear_pattern_list(pl);
346 update_working_directory(NULL);
348 - return result;
347 + goto out;
348 }
349
350 fp = xfdopen(fd, "w");
@@ -358,9 +357,9 @@ static int write_patterns_and_update(struct pattern_list *pl)
357 fflush(fp);
358 commit_lock_file(&lk);
359
360 +out:
361 clear_pattern_list(pl);
362 -
363 - return 0;
362 + return result;
363 }
364
365 enum sparse_checkout_mode {