builtin/blame: fix leaking ignore revs files
When parsing the blame configuration we add "blame.ignoreRevsFile" configs to a string list. This string list is declared as with `NODUP`, and thus we hand over the allocated string to that list. We eventually end up calling `string_list_clear()` on that list, but due to it being declared as `NODUP` we will not release the associated strings and thus leak memory. Fix this issue by setting up the list as `DUP` instead and free the config string after insertion. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
3332f35577
commit
fbf7a46d88
|
@ -67,7 +67,7 @@ static int no_whole_file_rename;
|
|||
static int show_progress;
|
||||
static char repeated_meta_color[COLOR_MAXLEN];
|
||||
static int coloring_mode;
|
||||
static struct string_list ignore_revs_file_list = STRING_LIST_INIT_NODUP;
|
||||
static struct string_list ignore_revs_file_list = STRING_LIST_INIT_DUP;
|
||||
static int mark_unblamable_lines;
|
||||
static int mark_ignored_lines;
|
||||
|
||||
|
@ -725,6 +725,7 @@ static int git_blame_config(const char *var, const char *value,
|
|||
if (ret)
|
||||
return ret;
|
||||
string_list_insert(&ignore_revs_file_list, str);
|
||||
free(str);
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp(var, "blame.markunblamablelines")) {
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#!/bin/sh
|
||||
|
||||
test_description='ignore revisions when blaming'
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
|
||||
# Creates:
|
||||
|
|
Loading…
Reference in New Issue