diff options
| author | Carlos Martín Nieto <cmn@elego.de> | 2011-03-29 13:50:37 +0200 |
|---|---|---|
| committer | Carlos Martín Nieto <cmn@elego.de> | 2011-03-29 13:50:37 +0200 |
| commit | 3d23b74af75bc35b3676c1a7fc1f5a0299c9f4ee (patch) | |
| tree | 22a88766750d6c8454383018718045a78c24fcc3 | |
| parent | 238df5590cfb9f1cfc340938188b2425f9510f48 (diff) | |
| download | libgit2-3d23b74af75bc35b3676c1a7fc1f5a0299c9f4ee.tar.gz | |
Free the config var hash contents in git_config_free
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
| -rw-r--r-- | src/config.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/config.c b/src/config.c index 22ba5f56d..5c500c47f 100644 --- a/src/config.c +++ b/src/config.c @@ -35,6 +35,15 @@ ***********************/ static int config_parse(git_config *cfg_file); static int parse_variable(git_config *cfg, const char *section_name, const char *line); +void git_config_free(git_config *cfg); + +static void cvar_free(git_cvar *var) +{ + if(var->type == GIT_VAR_STR) + free(var->value.string); + + free(var); +} uint32_t config_table_hash(const void *key, int hash_id) { @@ -101,10 +110,18 @@ int git_config_open(git_config **cfg_out, const char *path) void git_config_free(git_config *cfg) { + git_cvar *var; + const void *_unused; + if (cfg == NULL) return; free(cfg->file_path); + + GIT_HASHTABLE_FOREACH(cfg->vars, _unused, var, + cvar_free(var); + ); + git_hashtable_free(cfg->vars); gitfo_free_buf(&cfg->reader.buffer); |
