Fix warnings and valgrind issues This fixes some various warnings that showed up in Travis and a couple uses of uninitialized memory and one memory leak.
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
diff --git a/src/checkout.c b/src/checkout.c
index 8d164cf..0d14e26 100644
--- a/src/checkout.c
+++ b/src/checkout.c
@@ -432,8 +432,8 @@ static int checkout_get_actions(
int error;
git_diff_list *diff = data->diff;
git_diff_delta *delta;
- size_t i, *counts;
- uint32_t *actions;
+ size_t i, *counts = NULL;
+ uint32_t *actions = NULL;
git_tree *head = NULL;
git_iterator *hiter = NULL;
char *pfx = git_pathspec_prefix(&data->opts->paths);
@@ -456,6 +456,7 @@ static int checkout_get_actions(
goto fail;
git__free(pfx);
+ pfx = NULL;
*counts_ptr = counts = git__calloc(CHECKOUT_ACTION__MAX+1, sizeof(size_t));
*actions_ptr = actions = git__calloc(diff->deltas.length, sizeof(uint32_t));
@@ -509,6 +510,8 @@ static int checkout_get_actions(
}
git_iterator_free(hiter);
+ git_tree_free(head);
+
return 0;
fail:
@@ -518,6 +521,7 @@ fail:
git__free(actions);
git_iterator_free(hiter);
+ git_tree_free(head);
git__free(pfx);
return -1;
diff --git a/src/index.c b/src/index.c
index 0ae1b44..4324449 100644
--- a/src/index.c
+++ b/src/index.c
@@ -402,7 +402,7 @@ int git_index_read(git_index *index)
{
int error = 0, updated;
git_buf buffer = GIT_BUF_INIT;
- git_futils_filestamp stamp;
+ git_futils_filestamp stamp = {0};
if (!index->index_file_path) {
giterr_set(GITERR_INDEX,
diff --git a/src/pack-objects.c b/src/pack-objects.c
index 7acc933..af7472a 100644
--- a/src/pack-objects.c
+++ b/src/pack-objects.c
@@ -73,16 +73,16 @@ static int packbuilder_config(git_packbuilder *pb)
{
git_config *config;
int ret;
+ int64_t val;
if (git_repository_config__weakptr(&config, pb->repo) < 0)
return -1;
-#define config_get(key, dst, default) \
- ret = git_config_get_int64((int64_t *)&dst, config, key); \
- if (ret == GIT_ENOTFOUND) \
- dst = default; \
- else if (ret < 0) \
- return -1;
+#define config_get(KEY,DST,DFLT) do { \
+ ret = git_config_get_int64(&val, config, KEY); \
+ if (!ret) (DST) = val; \
+ else if (ret == GIT_ENOTFOUND) (DST) = (DFLT); \
+ else if (ret < 0) return -1; } while (0)
config_get("pack.deltaCacheSize", pb->max_delta_cache_size,
GIT_PACK_DELTA_CACHE_SIZE);
diff --git a/src/transports/http.c b/src/transports/http.c
index 78977f4..34ade94 100644
--- a/src/transports/http.c
+++ b/src/transports/http.c
@@ -629,6 +629,8 @@ int git_smart_subtransport_http(git_smart_subtransport **out,
http_subtransport *t;
int flags;
+ (void)flags;
+
if (!out)
return -1;
diff --git a/tests-clar/clone/network.c b/tests-clar/clone/network.c
index 68fa8eb..1304f77 100644
--- a/tests-clar/clone/network.c
+++ b/tests-clar/clone/network.c
@@ -113,7 +113,7 @@ void test_clone_network__can_checkout_a_cloned_repo(void)
bool checkout_progress_cb_was_called = false,
fetch_progress_cb_was_called = false;
- opts.checkout_strategy = GIT_CHECKOUT_UPDATE_UNMODIFIED;
+ opts.checkout_strategy = GIT_CHECKOUT_SAFE;
opts.progress_cb = &checkout_progress;
opts.progress_payload = &checkout_progress_cb_was_called;
diff --git a/tests-clar/config/configlevel.c b/tests-clar/config/configlevel.c
index 69aede6..1c22e8d 100644
--- a/tests-clar/config/configlevel.c
+++ b/tests-clar/config/configlevel.c
@@ -62,7 +62,6 @@ void test_config_configlevel__fetching_a_level_from_an_empty_compound_config_ret
{
git_config *cfg;
git_config *local_cfg;
- const char *s;
cl_git_pass(git_config_new(&cfg));
diff --git a/tests-clar/stash/stash_helpers.c b/tests-clar/stash/stash_helpers.c
index 000a0f1..86a7418 100644
--- a/tests-clar/stash/stash_helpers.c
+++ b/tests-clar/stash/stash_helpers.c
@@ -16,6 +16,7 @@ void commit_staged_files(
cl_git_pass(git_index_write_tree(&tree_oid, index));
cl_git_pass(git_tree_lookup(&tree, repo, &tree_oid));
+
cl_git_pass(git_commit_create_v(
commit_oid,
repo,