diff options
author | Edward Thomson <ethomson@github.com> | 2016-03-28 13:51:21 -0400 |
---|---|---|
committer | Edward Thomson <ethomson@github.com> | 2016-03-28 13:51:21 -0400 |
commit | b085ecbe09019f885842c9b7244f9a9c8b639f86 (patch) | |
tree | 7ad0e348499fb41e4928971d726a926a12cd8eea | |
parent | e89abec69f114a4480431c74160558b86148af41 (diff) | |
parent | 6f09911c0f50b32a89953b163f8fe249c8c83746 (diff) | |
download | libgit2-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.c | 17 | ||||
-rw-r--r-- | tests/config/multivar.c | 2 |
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); |