aboutsummaryrefslogtreecommitdiffstats
path: root/builtin
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2024-06-11 11:21:29 +0200
committerJunio C Hamano <gitster@pobox.com>2024-06-11 13:15:08 -0700
commitfbf7a46d881429ef5495af7bbf3a6c3dacbf80b3 (patch)
tree0762caddb96d527a56611eb19741536a8e0cee00 /builtin
parentbuiltin/blame: fix leaking prefixed paths (diff)
downloadgit-fbf7a46d881429ef5495af7bbf3a6c3dacbf80b3.tar.gz
git-fbf7a46d881429ef5495af7bbf3a6c3dacbf80b3.zip
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>
Diffstat (limited to 'builtin')
-rw-r--r--builtin/blame.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/builtin/blame.c b/builtin/blame.c
index 17694410ed..702fe4fb94 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -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")) {