mirror of
https://git.proxmox.com/git/libgit2
synced 2025-06-23 09:10:46 +00:00
Merge pull request #3703 from libgit2/cmn/multivar-set-locked
config: don't special-case multivars that don't exist yet
This commit is contained in:
commit
b085ecbe09
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user