On Tue, Jun 04, 2024 at 06:01:42AM -0400, Jeff King wrote: > On Tue, Jun 04, 2024 at 09:42:57AM +0200, Patrick Steinhardt wrote: > > > > diff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c > > > index 356b7349f9..3af9fec1fb 100644 > > > --- a/builtin/sparse-checkout.c > > > +++ b/builtin/sparse-checkout.c > > > @@ -500,6 +500,8 @@ static int sparse_checkout_init(int argc, const char **argv, const char *prefix) > > > return 0; > > > } > > > > > > + free(sparse_filename); > > > + > > > > I wonder whether it would make sense to merge this patch and patch 4 > > and then refactor the code to have a common exit path. > > I thought about that, too, but it doesn't quite work. In the non-error > exit path we _don't_ clean up the pattern_list, because we tail-call > into write_patterns_and_update(), which frees it itself. > > If we refactored that function to _not_ free, and then switched here to > a "ret" variable, like: > > ... > ret = write_patterns_and_update(&pl); > out: > clear_pattern_list(&pl); > free(sparse_filename); > return ret; > > it could work. I mostly tried to err on the side of minimizing > refactoring, though. Fair enough, thanks for explaining. Patrick
Attachment:
signature.asc
Description: PGP signature