diff options
| author | Carlos Martín Nieto <cmn@dwim.me> | 2013-09-06 21:12:26 +0200 |
|---|---|---|
| committer | Carlos Martín Nieto <cmn@dwim.me> | 2013-09-07 20:51:26 +0200 |
| commit | 73fc5e01c2ad4af7912201fc938b234a2dc854ac (patch) | |
| tree | 7ccd668e96d940c3f0f5bb70f424b5834ac5d407 /src/config_file.c | |
| parent | a9fb79896e59f4e58cd7d174e7835e8a9c850a33 (diff) | |
| download | libgit2-73fc5e01c2ad4af7912201fc938b234a2dc854ac.tar.gz | |
config: fix variable overriding
When two or more variables of the same name exist and the user asks
for a scalar, we must return the latest value assign to it.
Diffstat (limited to 'src/config_file.c')
| -rw-r--r-- | src/config_file.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/config_file.c b/src/config_file.c index c83576524..48a91eb4e 100644 --- a/src/config_file.c +++ b/src/config_file.c @@ -395,6 +395,7 @@ static int config_get(const git_config_backend *cfg, const char *name, const git char *key; khiter_t pos; int error; + cvar_t *var; if ((error = git_config__normalize_name(name, &key)) < 0) return error; @@ -406,7 +407,11 @@ static int config_get(const git_config_backend *cfg, const char *name, const git if (!git_strmap_valid_index(b->values, pos)) return GIT_ENOTFOUND; - *out = ((cvar_t *)git_strmap_value_at(b->values, pos))->entry; + var = git_strmap_value_at(b->values, pos); + while (var->next) + var = var->next; + + *out = var->entry; return 0; } |
