Plug a few 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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
diff --git a/src/diff_tform.c b/src/diff_tform.c
index 8ee568c..06c1230 100644
--- a/src/diff_tform.c
+++ b/src/diff_tform.c
@@ -277,7 +277,7 @@ static int normalize_find_opts(
if (!given ||
(given->flags & GIT_DIFF_FIND_ALL) == GIT_DIFF_FIND_BY_CONFIG)
{
- const char *rule =
+ char *rule =
git_config__get_string_force(cfg, "diff.renames", "true");
int boolval;
@@ -287,6 +287,8 @@ static int normalize_find_opts(
opts->flags |= GIT_DIFF_FIND_RENAMES | GIT_DIFF_FIND_COPIES;
else
opts->flags |= GIT_DIFF_FIND_RENAMES;
+
+ git__free(rule);
}
/* some flags imply others */
diff --git a/src/rebase.c b/src/rebase.c
index 43945df..eb25d4c 100644
--- a/src/rebase.c
+++ b/src/rebase.c
@@ -466,11 +466,11 @@ static int rebase_normalize_opts(
opts->rewrite_notes_ref = git__strdup(given_opts->rewrite_notes_ref);
GITERR_CHECK_ALLOC(opts->rewrite_notes_ref);
} else if (git_config__get_bool_force(config, "notes.rewrite.rebase", 1)) {
- const char *rewrite_ref = git_config__get_string_force(
+ char *rewrite_ref = git_config__get_string_force(
config, "notes.rewriteref", NOTES_DEFAULT_REF);
if (rewrite_ref) {
- opts->rewrite_notes_ref = git__strdup(rewrite_ref);
+ opts->rewrite_notes_ref = rewrite_ref;
GITERR_CHECK_ALLOC(opts->rewrite_notes_ref);
}
}
diff --git a/src/refs.c b/src/refs.c
index 3f6c33d..360e653 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -1075,7 +1075,7 @@ int git_reference__update_terminal(
const git_signature *sig,
const char *log_message)
{
- git_reference *ref = NULL;
+ git_reference *ref = NULL, *ref2 = NULL;
git_signature *who = NULL;
const git_signature *to_use;
int error = 0;
@@ -1090,18 +1090,20 @@ int git_reference__update_terminal(
if (error == GIT_ENOTFOUND && ref) {
assert(git_reference_type(ref) == GIT_REF_SYMBOLIC);
giterr_clear();
- error = reference__create(&ref, repo, ref->target.symbolic, oid, NULL, 0, to_use,
+ error = reference__create(&ref2, repo, ref->target.symbolic, oid, NULL, 0, to_use,
log_message, NULL, NULL);
} else if (error == GIT_ENOTFOUND) {
giterr_clear();
- error = reference__create(&ref, repo, ref_name, oid, NULL, 0, to_use,
+ error = reference__create(&ref2, repo, ref_name, oid, NULL, 0, to_use,
log_message, NULL, NULL);
} else if (error == 0) {
assert(git_reference_type(ref) == GIT_REF_OID);
- error = reference__create(&ref, repo, ref->name, oid, NULL, 1, to_use,
+ error = reference__create(&ref2, repo, ref->name, oid, NULL, 1, to_use,
log_message, &ref->target.oid, NULL);
}
+ git_reference_free(ref2);
+ git_reference_free(ref);
git_signature_free(who);
return error;
}
diff --git a/src/repository.c b/src/repository.c
index 43d3aea..e9d74b7 100644
--- a/src/repository.c
+++ b/src/repository.c
@@ -1948,6 +1948,7 @@ int git_repository_set_head(
}
cleanup:
+ git_buf_free(&log_message);
git_reference_free(current);
git_reference_free(ref);
git_reference_free(new_head);
@@ -1980,6 +1981,7 @@ int git_repository_set_head_detached(
error = git_reference_create(&new_head, repo, GIT_HEAD_FILE, git_object_id(peeled), true, git_buf_cstr(&log_message));
cleanup:
+ git_buf_free(&log_message);
git_object_free(object);
git_object_free(peeled);
git_reference_free(current);
@@ -2012,6 +2014,7 @@ int git_repository_detach_head(git_repository* repo)
1, git_buf_cstr(&log_message));
cleanup:
+ git_buf_free(&log_message);
git_object_free(object);
git_reference_free(old_head);
git_reference_free(new_head);
diff --git a/tests/config/include.c b/tests/config/include.c
index e9f542a..882b89b 100644
--- a/tests/config/include.c
+++ b/tests/config/include.c
@@ -128,5 +128,6 @@ void test_config_include__depth2(void)
cl_git_pass(git_config_get_string_buf(&buf, cfg, "foo.bar2"));
cl_assert_equal_s("baz2", git_buf_cstr(&buf));
+ git_buf_free(&buf);
git_config_free(cfg);
}
diff --git a/tests/reset/hard.c b/tests/reset/hard.c
index f21ea9f..f6ca103 100644
--- a/tests/reset/hard.c
+++ b/tests/reset/hard.c
@@ -221,4 +221,6 @@ void test_reset_hard__reflog_is_correct(void)
cl_git_pass(git_reset(repo, target, GIT_RESET_HARD, NULL));
reflog_check(repo, "HEAD", 4, NULL, git_buf_cstr(&buf));
reflog_check(repo, "refs/heads/master", 4, NULL, git_buf_cstr(&buf));
+
+ git_buf_free(&buf);
}
diff --git a/tests/reset/mixed.c b/tests/reset/mixed.c
index 5b42ebc..b374902 100644
--- a/tests/reset/mixed.c
+++ b/tests/reset/mixed.c
@@ -72,4 +72,6 @@ void test_reset_mixed__reflog_is_correct(void)
cl_git_pass(git_reset(repo, target, GIT_RESET_MIXED, NULL));
reflog_check(repo, "HEAD", 10, NULL, git_buf_cstr(&buf));
reflog_check(repo, "refs/heads/master", 10, NULL, git_buf_cstr(&buf));
+
+ git_buf_free(&buf);
}