diff options
| author | Patrick Steinhardt <ps@pks.im> | 2024-11-05 07:16:50 +0100 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2024-11-04 22:37:52 -0800 |
| commit | a6590ccdd431e2ab7b9c521cac674546725a54d2 (patch) | |
| tree | 13f495a5637b5d661ef680eb96c3061a71e962fe /grep.c | |
| parent | ee3e8c3afa5f432c5232aba80a07b0884d388381 (diff) | |
| download | git-a6590ccdd431e2ab7b9c521cac674546725a54d2.tar.gz | |
grep: fix leak in `grep_splice_or()`
In `grep_splice_or()` we search for the next `TRUE` node in our tree of
grep expressions and replace it with the given new expression. But we
don't free the old node, which causes a memory leak. Plug it.
This leak is exposed by t7810, but plugging it alone isn't sufficient to
make the test suite pass.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'grep.c')
| -rw-r--r-- | grep.c | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -756,6 +756,7 @@ static struct grep_expr *grep_splice_or(struct grep_expr *x, struct grep_expr *y assert(x->node == GREP_NODE_OR); if (x->u.binary.right && x->u.binary.right->node == GREP_NODE_TRUE) { + free(x->u.binary.right); x->u.binary.right = y; break; } |
