summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@github.com>2016-03-28 13:51:21 -0400
committerEdward Thomson <ethomson@github.com>2016-03-28 13:51:21 -0400
commitb085ecbe09019f885842c9b7244f9a9c8b639f86 (patch)
tree7ad0e348499fb41e4928971d726a926a12cd8eea
parente89abec69f114a4480431c74160558b86148af41 (diff)
parent6f09911c0f50b32a89953b163f8fe249c8c83746 (diff)
downloadlibgit2-b085ecbe09019f885842c9b7244f9a9c8b639f86.tar.gz
Merge pull request #3703 from libgit2/cmn/multivar-set-locked
config: don't special-case multivars that don't exist yet
-rw-r--r--src/config_file.c17
-rw-r--r--tests/config/multivar.c2
2 files changed, 1 insertions, 18 deletions
diff --git a/src/config_file.c b/src/config_file.c
index 584b9fa82..02bb2f75e 100644
--- a/src/config_file.c
+++ b/src/config_file.c
@@ -561,31 +561,15 @@ static int config_set_multivar(
git_config_backend *cfg, const char *name, const char *regexp, const char *value)
{
diskfile_backend *b = (diskfile_backend *)cfg;
- refcounted_strmap *map;
- git_strmap *values;
char *key;
regex_t preg;
int result;
- khiter_t pos;
assert(regexp);
if ((result = git_config__normalize_name(name, &key)) < 0)
return result;
- if ((map = refcounted_strmap_take(&b->header)) == NULL)
- return -1;
- values = b->header.values->values;
-
- pos = git_strmap_lookup_index(values, key);
- if (!git_strmap_valid_index(values, pos)) {
- /* If we don't have it, behave like a normal set */
- result = config_set(cfg, name, value);
- refcounted_strmap_free(map);
- git__free(key);
- return result;
- }
-
result = regcomp(&preg, regexp, REG_EXTENDED);
if (result != 0) {
giterr_set_regex(&preg, result);
@@ -600,7 +584,6 @@ static int config_set_multivar(
result = config_refresh(cfg);
out:
- refcounted_strmap_free(map);
git__free(key);
regfree(&preg);
diff --git a/tests/config/multivar.c b/tests/config/multivar.c
index 015008992..d1b8c4cda 100644
--- a/tests/config/multivar.c
+++ b/tests/config/multivar.c
@@ -163,7 +163,7 @@ void test_config_multivar__add_new(void)
cl_git_pass(git_config_open_ondisk(&cfg, "config/config11"));
- cl_git_pass(git_config_set_multivar(cfg, var, "", "variable"));
+ cl_git_pass(git_config_set_multivar(cfg, var, "$^", "variable"));
n = 0;
cl_git_pass(git_config_get_multivar_foreach(cfg, var, NULL, cb, &n));
cl_assert_equal_i(n, 1);