Re: [PATCH] commit: fix memory leak in `prepare_index()`
- From
Jeff King <peff@peff.net>
- Date
- Sep 20, 2017, 19:55 UTC
- Message-ID
- <20170920195525.3fx5oq7i4arjnun4@sigill.intra.peff.net>
- In-Reply-To
- <1505936846-2195-1-git-send-email-martin.agren@gmail.com>
On Wed, Sep 20, 2017 at 09:47:23PM +0200, Martin Ågren wrote:
> Release `pathspec` and the string list `partial`.
Makes sense.
> When we clear the string list, make sure we do not free the `util` > pointers. That would result in double-freeing, since we set them up as > `item->util = item` in `list_paths()`.
Also makes sense (and is kind of weird; it looks like we're just using it as a magic flag. But that's outside the scope of your patch).
> Initialize the string list early, so that we can always release it. That > introduces some unnecessary overhead in various code paths, but means > there is one and only one way out of the function. If we ever accumulate > more things we need to free, it should be straightforward to do so.
The overhead is fine. It's just writing the struct entries, not allocating anything. I wondered if the pathspec needed a similar initialization (since you can't tell just from reading the context), but no, it's initialized as the first thing in the function.
> Signed-off-by: Martin Ågren <martin.agren@gmail.com> > --- > builtin/commit.c | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-)
Looks good to me. Thanks.
-Peff