]> git.ipfire.org Git - thirdparty/git.git/commitdiff
fix memory leak parsing core.commentchar
authorJeff King <peff@peff.net>
Thu, 24 Jul 2014 04:42:39 +0000 (00:42 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 24 Jul 2014 20:57:50 +0000 (13:57 -0700)
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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
config.c

index a30cb5c07db18a5ac16c1c98b6600c9fe6dc1b73..40799a1dbaa1a156a5d2693e1e17eb85d52e3a0e 100644 (file)
--- a/config.c
+++ b/config.c
@@ -824,11 +824,11 @@ 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)
-                       comment_line_char = comment[0];
-               return ret;
+               if (!value)
+                       return config_error_nonbool(var);
+               else
+                       comment_line_char = value[0];
+               return 0;
        }
 
        if (!strcmp(var, "core.askpass"))