Skip to content

Commit 1cae428

Browse files
peffgitster
authored andcommitted
git_config_set_multivar_in_file: handle "unset" errors
We pass off to the "_gently" form to do the real work, and just die() if it returned an error. However, our die message de-references "value", which may be NULL if the request was to unset a variable. Nobody using glibc noticed, because it simply prints "(null)", which is good enough for the test suite (and presumably very few people run across this in practice). But other libc implementations (like Solaris) may segfault. Let's not only fix that, but let's make the message more clear about what is going on in the "unset" case. Reported-by: "Tom G. Christensen" <[email protected]> Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 9c14bb0 commit 1cae428

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

config.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2221,9 +2221,13 @@ void git_config_set_multivar_in_file(const char *config_filename,
22212221
const char *key, const char *value,
22222222
const char *value_regex, int multi_replace)
22232223
{
2224-
if (git_config_set_multivar_in_file_gently(config_filename, key, value,
2225-
value_regex, multi_replace))
2224+
if (!git_config_set_multivar_in_file_gently(config_filename, key, value,
2225+
value_regex, multi_replace))
2226+
return;
2227+
if (value)
22262228
die(_("could not set '%s' to '%s'"), key, value);
2229+
else
2230+
die(_("could not unset '%s'"), key);
22272231
}
22282232

22292233
int git_config_set_multivar_gently(const char *key, const char *value,

0 commit comments

Comments
 (0)