mirror of
https://git.proxmox.com/git/libgit2
synced 2025-06-23 06:52:19 +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)
|
git_config_backend *cfg, const char *name, const char *regexp, const char *value)
|
||||||
{
|
{
|
||||||
diskfile_backend *b = (diskfile_backend *)cfg;
|
diskfile_backend *b = (diskfile_backend *)cfg;
|
||||||
refcounted_strmap *map;
|
|
||||||
git_strmap *values;
|
|
||||||
char *key;
|
char *key;
|
||||||
regex_t preg;
|
regex_t preg;
|
||||||
int result;
|
int result;
|
||||||
khiter_t pos;
|
|
||||||
|
|
||||||
assert(regexp);
|
assert(regexp);
|
||||||
|
|
||||||
if ((result = git_config__normalize_name(name, &key)) < 0)
|
if ((result = git_config__normalize_name(name, &key)) < 0)
|
||||||
return result;
|
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);
|
result = regcomp(&preg, regexp, REG_EXTENDED);
|
||||||
if (result != 0) {
|
if (result != 0) {
|
||||||
giterr_set_regex(&preg, result);
|
giterr_set_regex(&preg, result);
|
||||||
@ -600,7 +584,6 @@ static int config_set_multivar(
|
|||||||
result = config_refresh(cfg);
|
result = config_refresh(cfg);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
refcounted_strmap_free(map);
|
|
||||||
git__free(key);
|
git__free(key);
|
||||||
regfree(&preg);
|
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_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;
|
n = 0;
|
||||||
cl_git_pass(git_config_get_multivar_foreach(cfg, var, NULL, cb, &n));
|
cl_git_pass(git_config_get_multivar_foreach(cfg, var, NULL, cb, &n));
|
||||||
cl_assert_equal_i(n, 1);
|
cl_assert_equal_i(n, 1);
|
||||||
|
Loading…
Reference in New Issue
Block a user