On 24/10/21 11:28AM, Patrick Steinhardt wrote: > The `cnt` variable tracks the number of lines in a patch diff. It can > happen though that there are no newlines, in which case we'd still end > up allocating our array of `sline`s. In fact, we always allocate it with > `cnt + 2` entries. But when we loop through the array to clear it at the > end of this function we only loop until `lno < cnt`, and thus we may not > end up releasing whatever the two extra `sline`s contain. > > Plug this memory leak. > > Signed-off-by: Patrick Steinhardt <ps@xxxxxx> > --- > combine-diff.c | 2 +- > t/t4038-diff-combined.sh | 1 + > 2 files changed, 2 insertions(+), 1 deletion(-) > > diff --git a/combine-diff.c b/combine-diff.c > index f6b624dc288..3c6d9507fec 100644 > --- a/combine-diff.c > +++ b/combine-diff.c > @@ -1220,7 +1220,7 @@ static void show_patch_diff(struct combine_diff_path *elem, int num_parent, > } > free(result); > > - for (lno = 0; lno < cnt; lno++) { > + for (lno = 0; lno < cnt + 2; lno++) {