[PATCH 4/5] fix memory leak parsing core.commentchar
- From
Jeff King <peff@peff.net>
- Date
- Jul 24, 2014, 04:42 UTC
- Message-ID
- <20140724044239.GD32355@peff.net>
- In-Reply-To
- <20140724043940.GA31282@peff.net>
When we see the core.commentchar config option, we extract the string with git_config_string, which does two things:
1. It complains via config_error_nonbool if there is no
string value.2. It makes a copy of the string.
Since we immediately parse the string into its single-character value, we only care about (1). And in fact (2) is a detriment, as it means we leak the copy. Instead, let's just check the pointer value ourselves, and parse directly from the const string we already have.
Signed-off-by: Jeff King <peff@peff.net> --- config.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/config.c b/config.c index 9767c4b..058505c 100644 --- a/config.c +++ b/config.c @@ -817,14 +817,12 @@ static int git_default_core_config(const char *var, const char *value) return git_config_string(&editor_program, var, value); if (!strcmp(var, "core.commentchar")) { - const char *comment; - int ret = git_config_string(&comment, var, value); - if (ret) - return ret; - else if (!strcasecmp(comment, "auto")) + if (!value) + return config_error_nonbool(var); + else if (!strcasecmp(value, "auto")) auto_comment_line_char = 1; - else if (comment[0] && !comment[1]) { - comment_line_char = comment[0]; + else if (value[0] && !value[1]) { + comment_line_char = value[0]; auto_comment_line_char = 0; } else return error("core.commentChar should only be one character");
-- 2.0.0.566.gfe3e6b2