Skip to content

Commit fe21d70

Browse files
committed
Plug a few leaks
1 parent 9ce9778 commit fe21d70

7 files changed

Lines changed: 19 additions & 7 deletions

File tree

src/diff_tform.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ static int normalize_find_opts(
277277
if (!given ||
278278
(given->flags & GIT_DIFF_FIND_ALL) == GIT_DIFF_FIND_BY_CONFIG)
279279
{
280-
const char *rule =
280+
char *rule =
281281
git_config__get_string_force(cfg, "diff.renames", "true");
282282
int boolval;
283283

@@ -287,6 +287,8 @@ static int normalize_find_opts(
287287
opts->flags |= GIT_DIFF_FIND_RENAMES | GIT_DIFF_FIND_COPIES;
288288
else
289289
opts->flags |= GIT_DIFF_FIND_RENAMES;
290+
291+
git__free(rule);
290292
}
291293

292294
/* some flags imply others */

src/rebase.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -466,11 +466,11 @@ static int rebase_normalize_opts(
466466
opts->rewrite_notes_ref = git__strdup(given_opts->rewrite_notes_ref);
467467
GITERR_CHECK_ALLOC(opts->rewrite_notes_ref);
468468
} else if (git_config__get_bool_force(config, "notes.rewrite.rebase", 1)) {
469-
const char *rewrite_ref = git_config__get_string_force(
469+
char *rewrite_ref = git_config__get_string_force(
470470
config, "notes.rewriteref", NOTES_DEFAULT_REF);
471471

472472
if (rewrite_ref) {
473-
opts->rewrite_notes_ref = git__strdup(rewrite_ref);
473+
opts->rewrite_notes_ref = rewrite_ref;
474474
GITERR_CHECK_ALLOC(opts->rewrite_notes_ref);
475475
}
476476
}

src/refs.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1075,7 +1075,7 @@ int git_reference__update_terminal(
10751075
const git_signature *sig,
10761076
const char *log_message)
10771077
{
1078-
git_reference *ref = NULL;
1078+
git_reference *ref = NULL, *ref2 = NULL;
10791079
git_signature *who = NULL;
10801080
const git_signature *to_use;
10811081
int error = 0;
@@ -1090,18 +1090,20 @@ int git_reference__update_terminal(
10901090
if (error == GIT_ENOTFOUND && ref) {
10911091
assert(git_reference_type(ref) == GIT_REF_SYMBOLIC);
10921092
giterr_clear();
1093-
error = reference__create(&ref, repo, ref->target.symbolic, oid, NULL, 0, to_use,
1093+
error = reference__create(&ref2, repo, ref->target.symbolic, oid, NULL, 0, to_use,
10941094
log_message, NULL, NULL);
10951095
} else if (error == GIT_ENOTFOUND) {
10961096
giterr_clear();
1097-
error = reference__create(&ref, repo, ref_name, oid, NULL, 0, to_use,
1097+
error = reference__create(&ref2, repo, ref_name, oid, NULL, 0, to_use,
10981098
log_message, NULL, NULL);
10991099
} else if (error == 0) {
11001100
assert(git_reference_type(ref) == GIT_REF_OID);
1101-
error = reference__create(&ref, repo, ref->name, oid, NULL, 1, to_use,
1101+
error = reference__create(&ref2, repo, ref->name, oid, NULL, 1, to_use,
11021102
log_message, &ref->target.oid, NULL);
11031103
}
11041104

1105+
git_reference_free(ref2);
1106+
git_reference_free(ref);
11051107
git_signature_free(who);
11061108
return error;
11071109
}

src/repository.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1948,6 +1948,7 @@ int git_repository_set_head(
19481948
}
19491949

19501950
cleanup:
1951+
git_buf_free(&log_message);
19511952
git_reference_free(current);
19521953
git_reference_free(ref);
19531954
git_reference_free(new_head);
@@ -1980,6 +1981,7 @@ int git_repository_set_head_detached(
19801981
error = git_reference_create(&new_head, repo, GIT_HEAD_FILE, git_object_id(peeled), true, git_buf_cstr(&log_message));
19811982

19821983
cleanup:
1984+
git_buf_free(&log_message);
19831985
git_object_free(object);
19841986
git_object_free(peeled);
19851987
git_reference_free(current);
@@ -2012,6 +2014,7 @@ int git_repository_detach_head(git_repository* repo)
20122014
1, git_buf_cstr(&log_message));
20132015

20142016
cleanup:
2017+
git_buf_free(&log_message);
20152018
git_object_free(object);
20162019
git_reference_free(old_head);
20172020
git_reference_free(new_head);

tests/config/include.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,5 +128,6 @@ void test_config_include__depth2(void)
128128
cl_git_pass(git_config_get_string_buf(&buf, cfg, "foo.bar2"));
129129
cl_assert_equal_s("baz2", git_buf_cstr(&buf));
130130

131+
git_buf_free(&buf);
131132
git_config_free(cfg);
132133
}

tests/reset/hard.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,4 +221,6 @@ void test_reset_hard__reflog_is_correct(void)
221221
cl_git_pass(git_reset(repo, target, GIT_RESET_HARD, NULL));
222222
reflog_check(repo, "HEAD", 4, NULL, git_buf_cstr(&buf));
223223
reflog_check(repo, "refs/heads/master", 4, NULL, git_buf_cstr(&buf));
224+
225+
git_buf_free(&buf);
224226
}

tests/reset/mixed.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,6 @@ void test_reset_mixed__reflog_is_correct(void)
7272
cl_git_pass(git_reset(repo, target, GIT_RESET_MIXED, NULL));
7373
reflog_check(repo, "HEAD", 10, NULL, git_buf_cstr(&buf));
7474
reflog_check(repo, "refs/heads/master", 10, NULL, git_buf_cstr(&buf));
75+
76+
git_buf_free(&buf);
7577
}

0 commit comments

Comments
 (0)