diff: plug memory leak from regcomp() on {log,diff} -I
Fix a memory leak in296d4a94e7
(diff: add -I<regex> that ignores matching changes, 2020-10-20) by freeing the memory it allocates in the newly introduced diff_free(). See the previous commit for details on that. This memory leak was intentionally introduced in296d4a94e7
, see the discussion on a previous iteration of it in https://lore.kernel.org/git/xmqqeelycajx.fsf@gitster.c.googlers.com/ At that time freeing the memory was somewhat tedious, but since it isn't anymore with the newly introduced diff_free() let's use it. Let's retain the pattern for diff_free_file() and add a diff_free_ignore_regex(), even though (unlike "diff_free_file") we don't need to call it elsewhere. I think this'll make for more readable code than gradually accumulating a giant diff_free() function, sharing "int i" across unrelated code etc. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e900d494dc
commit
c45dc9cf30
12
diff.c
12
diff.c
@ -6342,12 +6342,24 @@ static void diff_free_file(struct diff_options *options)
|
||||
fclose(options->file);
|
||||
}
|
||||
|
||||
static void diff_free_ignore_regex(struct diff_options *options)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < options->ignore_regex_nr; i++) {
|
||||
regfree(options->ignore_regex[i]);
|
||||
free(options->ignore_regex[i]);
|
||||
}
|
||||
free(options->ignore_regex);
|
||||
}
|
||||
|
||||
void diff_free(struct diff_options *options)
|
||||
{
|
||||
if (options->no_free)
|
||||
return;
|
||||
|
||||
diff_free_file(options);
|
||||
diff_free_ignore_regex(options);
|
||||
}
|
||||
|
||||
void diff_flush(struct diff_options *options)
|
||||
|
Loading…
Reference in New Issue
Block a user