Merge pull request #266 from carlosmn/valgrind Plug memory leaks
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
diff --git a/src/config_file.c b/src/config_file.c
index 916b4d0..5199361 100644
--- a/src/config_file.c
+++ b/src/config_file.c
@@ -986,10 +986,19 @@ static int config_write(diskfile_backend *cfg, cvar_t *var)
break;
}
} else {
+ int cmp;
+
pre_end = cfg->reader.read_ptr;
error = parse_variable(cfg, &var_name, &var_value);
- if (error < GIT_SUCCESS || strcasecmp(var->name, var_name))
+ if (error == GIT_SUCCESS)
+ cmp = strcasecmp(var->name, var_name);
+
+ free(var_name);
+ free(var_value);
+
+ if (error < GIT_SUCCESS || cmp)
break;
+
post_start = cfg->reader.read_ptr;
}
@@ -1060,6 +1069,7 @@ static int config_write(diskfile_backend *cfg, cvar_t *var)
else
error = git_filebuf_commit(&file);
+ gitfo_free_buf(&cfg->reader.buffer);
return error;
}
diff --git a/tests/t06-index.c b/tests/t06-index.c
index 51f8936..27819c0 100644
--- a/tests/t06-index.c
+++ b/tests/t06-index.c
@@ -208,6 +208,7 @@ BEGIN_TEST(add0, "add a new file to the index")
/* And the built-in hashing mechanism worked as expected */
must_be_true(git_oid_cmp(&id1, &entry->oid) == 0);
+ git_index_free(index);
git_repository_free(repo);
rmdir_recurs(TEMP_REPO_FOLDER);
END_TEST
diff --git a/tests/t12-repo.c b/tests/t12-repo.c
index d403869..3447f2b 100644
--- a/tests/t12-repo.c
+++ b/tests/t12-repo.c
@@ -355,6 +355,7 @@ BEGIN_TEST(discover0, "test discover")
must_pass(git_repository_init(&repo, DISCOVER_FOLDER, 1));
must_pass(git_repository_discover(repository_path, sizeof(repository_path), DISCOVER_FOLDER, 0, ceiling_dirs));
+ git_repository_free(repo);
must_pass(git_repository_init(&repo, SUB_REPOSITORY_FOLDER, 0));
must_pass(gitfo_mkdir_recurs(SUB_REPOSITORY_FOLDER_SUB_SUB_SUB, mode));
@@ -402,6 +403,7 @@ BEGIN_TEST(discover0, "test discover")
must_pass(ensure_repository_discover(REPOSITORY_ALTERNATE_FOLDER_SUB_SUB_SUB, ceiling_dirs, repository_path));
rmdir_recurs(DISCOVER_FOLDER);
+ git_repository_free(repo);
END_TEST
BEGIN_SUITE(repository)