Re: [PATCH 18/22] builtin/grep: fix leaking object context
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 4, 2024, 22:36 UTC
- Message-ID
- <xmqqed5z6o7y.fsf@gitster.g>
- In-Reply-To
- <0722cb38ea9d6b158a07da6f31ad0fe83424cb2e.1724656120.git.ps@pks.im>
Patrick Steinhardt <ps@pks.im> writes:
> Even when `get_oid_with_context()` fails it may have allocated some data > in tthe object context. But we do not release it in git-grep(1) when the
"tthe" -> "the".
Show 20 quoted lines
> call fails, leading to a memory leak. Plug it.
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> builtin/grep.c | 1 +
> t/t6132-pathspec-exclude.sh | 1 +
> t/t6135-pathspec-with-attrs.sh | 2 ++
> 3 files changed, 4 insertions(+)
>
> diff --git a/builtin/grep.c b/builtin/grep.c
> index dfc3c3e8bd2..dda4582d646 100644
> --- a/builtin/grep.c
> +++ b/builtin/grep.c
> @@ -1133,6 +1133,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
> &oid, &oc)) {
> if (seen_dashdash)
> die(_("unable to resolve revision: %s"), arg);
> + object_context_release(&oc);
> break;
> }OK. This is the "oh, this is not a revision argument" codepath. It is perfectly normal for get_oid_with_context() to fail here, and we should make sure we clear the context variable.
Thanks.