Skip to content

Commit c732f74

Browse files
committed
Merge branch 'ps/leakfixes'
Leakfix. * ps/leakfixes: setup: fix leaking repository format setup: refactor `upgrade_repository_format()` to have common exit shallow: fix memory leak when registering shallow roots test-bloom: stop setting up Git directory twice
2 parents 98009af + 9972cd6 commit c732f74

File tree

5 files changed

+28
-13
lines changed

5 files changed

+28
-13
lines changed

setup.c

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -693,29 +693,39 @@ int upgrade_repository_format(int target_version)
693693
struct strbuf err = STRBUF_INIT;
694694
struct strbuf repo_version = STRBUF_INIT;
695695
struct repository_format repo_fmt = REPOSITORY_FORMAT_INIT;
696+
int ret;
696697

697698
strbuf_git_common_path(&sb, the_repository, "config");
698699
read_repository_format(&repo_fmt, sb.buf);
699700
strbuf_release(&sb);
700701

701-
if (repo_fmt.version >= target_version)
702-
return 0;
702+
if (repo_fmt.version >= target_version) {
703+
ret = 0;
704+
goto out;
705+
}
703706

704707
if (verify_repository_format(&repo_fmt, &err) < 0) {
705-
error("cannot upgrade repository format from %d to %d: %s",
706-
repo_fmt.version, target_version, err.buf);
707-
strbuf_release(&err);
708-
return -1;
708+
ret = error("cannot upgrade repository format from %d to %d: %s",
709+
repo_fmt.version, target_version, err.buf);
710+
goto out;
711+
}
712+
if (!repo_fmt.version && repo_fmt.unknown_extensions.nr) {
713+
ret = error("cannot upgrade repository format: "
714+
"unknown extension %s",
715+
repo_fmt.unknown_extensions.items[0].string);
716+
goto out;
709717
}
710-
if (!repo_fmt.version && repo_fmt.unknown_extensions.nr)
711-
return error("cannot upgrade repository format: "
712-
"unknown extension %s",
713-
repo_fmt.unknown_extensions.items[0].string);
714718

715719
strbuf_addf(&repo_version, "%d", target_version);
716720
git_config_set("core.repositoryformatversion", repo_version.buf);
721+
722+
ret = 1;
723+
724+
out:
725+
clear_repository_format(&repo_fmt);
717726
strbuf_release(&repo_version);
718-
return 1;
727+
strbuf_release(&err);
728+
return ret;
719729
}
720730

721731
static void init_repository_format(struct repository_format *format)
@@ -2190,6 +2200,7 @@ int init_db(const char *git_dir, const char *real_git_dir,
21902200
git_dir, len && git_dir[len-1] != '/' ? "/" : "");
21912201
}
21922202

2203+
clear_repository_format(&repo_fmt);
21932204
free(original_git_dir);
21942205
return 0;
21952206
}

shallow.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@ int register_shallow(struct repository *r, const struct object_id *oid)
3838

3939
oidcpy(&graft->oid, oid);
4040
graft->nr_parent = -1;
41-
if (commit && commit->object.parsed)
41+
if (commit && commit->object.parsed) {
42+
free_commit_list(commit->parents);
4243
commit->parents = NULL;
44+
}
4345
return register_commit_graft(r, graft, 0);
4446
}
4547

t/helper/test-bloom.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ static void get_bloom_filter_for_commit(const struct object_id *commit_oid)
4040
{
4141
struct commit *c;
4242
struct bloom_filter *filter;
43-
setup_git_directory();
4443
c = lookup_commit(the_repository, commit_oid);
4544
filter = get_or_compute_bloom_filter(the_repository, c, 1,
4645
&settings,

t/t5311-pack-bitmaps-shallow.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#!/bin/sh
22

33
test_description='check bitmap operation with shallow repositories'
4+
5+
TEST_PASSES_SANITIZE_LEAK=true
46
. ./test-lib.sh
57

68
# We want to create a situation where the shallow, grafted

t/t5530-upload-pack-error.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
test_description='errors in upload-pack'
44

5+
TEST_PASSES_SANITIZE_LEAK=true
56
. ./test-lib.sh
67

78
D=$(pwd)

0 commit comments

Comments
 (0)