]> git.ipfire.org Git - thirdparty/git.git/commitdiff
sparse-checkout: consolidate cleanup when writing patterns
authorJeff King <peff@peff.net>
Fri, 6 Sep 2024 03:47:08 +0000 (23:47 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 6 Sep 2024 15:02:26 +0000 (08:02 -0700)
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>
builtin/sparse-checkout.c

index 2604ab04df5aee8046b7511587cb0c8cda768ddb..dfefe609a1a6adc504e4e91c694c435c7197104c 100644 (file)
@@ -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 {