Commit 3158e2fe by Russell Belfer

Fix some Windows warnings

This fixes a number of warnings with the Windows 64-bit build
including a test failure in test_repo_message__message where an
invalid pointer to a git_buf was being used.
parent c4ee3b54
...@@ -90,7 +90,7 @@ struct entry_long { ...@@ -90,7 +90,7 @@ struct entry_long {
struct entry_srch_key { struct entry_srch_key {
const char *path; const char *path;
int path_len; size_t path_len;
int stage; int stage;
}; };
...@@ -110,7 +110,8 @@ static int index_srch(const void *key, const void *array_member) ...@@ -110,7 +110,8 @@ static int index_srch(const void *key, const void *array_member)
{ {
const struct entry_srch_key *srch_key = key; const struct entry_srch_key *srch_key = key;
const git_index_entry *entry = array_member; const git_index_entry *entry = array_member;
int cmp, len1, len2, len; int cmp;
size_t len1, len2, len;
len1 = srch_key->path_len; len1 = srch_key->path_len;
len2 = strlen(entry->path); len2 = strlen(entry->path);
...@@ -134,7 +135,8 @@ static int index_isrch(const void *key, const void *array_member) ...@@ -134,7 +135,8 @@ static int index_isrch(const void *key, const void *array_member)
{ {
const struct entry_srch_key *srch_key = key; const struct entry_srch_key *srch_key = key;
const git_index_entry *entry = array_member; const git_index_entry *entry = array_member;
int cmp, len1, len2, len; int cmp;
size_t len1, len2, len;
len1 = srch_key->path_len; len1 = srch_key->path_len;
len2 = strlen(entry->path); len2 = strlen(entry->path);
...@@ -599,9 +601,7 @@ const git_index_entry *git_index_get_bypath( ...@@ -599,9 +601,7 @@ const git_index_entry *git_index_get_bypath(
assert(index); assert(index);
git_vector_sort(&index->entries); if (git_index__find(&pos, index, path, 0, stage) < 0) {
if (git_index__find(&pos, index, path, strlen(path), stage) < 0) {
giterr_set(GITERR_INDEX, "Index does not contain %s", path); giterr_set(GITERR_INDEX, "Index does not contain %s", path);
return NULL; return NULL;
} }
...@@ -837,8 +837,7 @@ static int index_insert(git_index *index, git_index_entry *entry, int replace) ...@@ -837,8 +837,7 @@ static int index_insert(git_index *index, git_index_entry *entry, int replace)
/* look if an entry with this path already exists */ /* look if an entry with this path already exists */
if (!git_index__find( if (!git_index__find(
&position, index, entry->path, strlen(entry->path), &position, index, entry->path, 0, GIT_IDXENTRY_STAGE(entry))) {
GIT_IDXENTRY_STAGE(entry))) {
existing = (git_index_entry **)&index->entries.contents[position]; existing = (git_index_entry **)&index->entries.contents[position];
/* update filemode to existing values if stat is not trusted */ /* update filemode to existing values if stat is not trusted */
entry->mode = index_merge_mode(index, *existing, entry->mode); entry->mode = index_merge_mode(index, *existing, entry->mode);
...@@ -950,9 +949,7 @@ int git_index_remove(git_index *index, const char *path, int stage) ...@@ -950,9 +949,7 @@ int git_index_remove(git_index *index, const char *path, int stage)
int error; int error;
git_index_entry *entry; git_index_entry *entry;
git_vector_sort(&index->entries); if (git_index__find(&position, index, path, 0, stage) < 0) {
if (git_index__find(&position, index, path, strlen(path), stage) < 0) {
giterr_set(GITERR_INDEX, "Index does not contain %s at stage %d", giterr_set(GITERR_INDEX, "Index does not contain %s at stage %d",
path, stage); path, stage);
return GIT_ENOTFOUND; return GIT_ENOTFOUND;
...@@ -1009,18 +1006,20 @@ int git_index_remove_directory(git_index *index, const char *dir, int stage) ...@@ -1009,18 +1006,20 @@ int git_index_remove_directory(git_index *index, const char *dir, int stage)
} }
int git_index__find( int git_index__find(
size_t *at_pos, git_index *index, const char *path, int path_len, int stage) size_t *out, git_index *index, const char *path, size_t path_len, int stage)
{ {
struct entry_srch_key srch_key; struct entry_srch_key srch_key;
assert(path); assert(path);
git_vector_sort(&index->entries);
srch_key.path = path; srch_key.path = path;
srch_key.path_len = path_len; srch_key.path_len = !path_len ? strlen(path) : path_len;
srch_key.stage = stage; srch_key.stage = stage;
return git_vector_bsearch2( return git_vector_bsearch2(
at_pos, &index->entries, index->entries_search, &srch_key); out, &index->entries, index->entries_search, &srch_key);
} }
int git_index_find(size_t *at_pos, git_index *index, const char *path) int git_index_find(size_t *at_pos, git_index *index, const char *path)
...@@ -2234,7 +2233,7 @@ int git_index_add_all( ...@@ -2234,7 +2233,7 @@ int git_index_add_all(
/* skip ignored items that are not already in the index */ /* skip ignored items that are not already in the index */
if ((flags & GIT_INDEX_ADD_FORCE) == 0 && if ((flags & GIT_INDEX_ADD_FORCE) == 0 &&
git_iterator_current_is_ignored(wditer) && git_iterator_current_is_ignored(wditer) &&
git_index__find(&existing, index, wd->path, strlen(wd->path), 0) < 0) git_index__find(&existing, index, wd->path, 0, 0) < 0)
continue; continue;
/* issue notification callback if requested */ /* issue notification callback if requested */
......
...@@ -56,7 +56,7 @@ extern int git_index_entry__cmp(const void *a, const void *b); ...@@ -56,7 +56,7 @@ extern int git_index_entry__cmp(const void *a, const void *b);
extern int git_index_entry__cmp_icase(const void *a, const void *b); extern int git_index_entry__cmp_icase(const void *a, const void *b);
extern int git_index__find( extern int git_index__find(
size_t *at_pos, git_index *index, const char *path, int path_len, int stage); size_t *at_pos, git_index *index, const char *path, size_t path_len, int stage);
extern void git_index__set_ignore_case(git_index *index, bool ignore_case); extern void git_index__set_ignore_case(git_index *index, bool ignore_case);
......
...@@ -445,7 +445,7 @@ static int pathspec_match_from_iterator( ...@@ -445,7 +445,7 @@ static int pathspec_match_from_iterator(
/* check if path is ignored and untracked */ /* check if path is ignored and untracked */
if (index != NULL && if (index != NULL &&
git_iterator_current_is_ignored(iter) && git_iterator_current_is_ignored(iter) &&
git_index__find(NULL, index, entry->path, strlen(entry->path), GIT_INDEX_STAGE_ANY) < 0) git_index__find(NULL, index, entry->path, 0, GIT_INDEX_STAGE_ANY) < 0)
continue; continue;
/* mark the matched pattern as used */ /* mark the matched pattern as used */
......
...@@ -1731,9 +1731,9 @@ int git_repository_message(git_buf *out, git_repository *repo) ...@@ -1731,9 +1731,9 @@ int git_repository_message(git_buf *out, git_repository *repo)
if (errno == ENOENT) if (errno == ENOENT)
error = GIT_ENOTFOUND; error = GIT_ENOTFOUND;
giterr_set(GITERR_OS, "Could not access message file"); giterr_set(GITERR_OS, "Could not access message file");
} } else {
error = git_futils_readbuffer(out, git_buf_cstr(&path)); error = git_futils_readbuffer(out, git_buf_cstr(&path));
}
git_buf_free(&path); git_buf_free(&path);
......
...@@ -200,7 +200,7 @@ static void test_reflog(git_repository *repo, size_t idx, ...@@ -200,7 +200,7 @@ static void test_reflog(git_repository *repo, size_t idx,
const char *email, const char *message) const char *email, const char *message)
{ {
git_reflog *log; git_reflog *log;
git_reflog_entry *entry; const git_reflog_entry *entry;
cl_git_pass(git_reflog_read(&log, repo, "HEAD")); cl_git_pass(git_reflog_read(&log, repo, "HEAD"));
entry = git_reflog_entry_byindex(log, idx); entry = git_reflog_entry_byindex(log, idx);
......
...@@ -4,38 +4,36 @@ ...@@ -4,38 +4,36 @@
#include "posix.h" #include "posix.h"
static git_repository *_repo; static git_repository *_repo;
static git_buf _path;
static git_buf _actual;
void test_repo_message__initialize(void) void test_repo_message__initialize(void)
{ {
_repo = cl_git_sandbox_init("testrepo.git"); _repo = cl_git_sandbox_init("testrepo.git");
git_buf_init(&_actual, 0);
} }
void test_repo_message__cleanup(void) void test_repo_message__cleanup(void)
{ {
cl_git_sandbox_cleanup(); cl_git_sandbox_cleanup();
git_buf_free(&_path);
git_buf_free(&_actual);
} }
void test_repo_message__none(void) void test_repo_message__none(void)
{ {
cl_assert_equal_i(GIT_ENOTFOUND, git_repository_message(&_actual, _repo)); git_buf actual = GIT_BUF_INIT;
cl_assert_equal_i(GIT_ENOTFOUND, git_repository_message(&actual, _repo));
} }
void test_repo_message__message(void) void test_repo_message__message(void)
{ {
git_buf path = GIT_BUF_INIT, actual = GIT_BUF_INIT;
const char expected[] = "Test\n\nThis is a test of the emergency broadcast system\n"; const char expected[] = "Test\n\nThis is a test of the emergency broadcast system\n";
cl_git_pass(git_buf_joinpath(&_path, git_repository_path(_repo), "MERGE_MSG")); cl_git_pass(git_buf_joinpath(&path, git_repository_path(_repo), "MERGE_MSG"));
cl_git_mkfile(git_buf_cstr(&_path), expected); cl_git_mkfile(git_buf_cstr(&path), expected);
cl_git_pass(git_repository_message(&_actual, _repo)); cl_git_pass(git_repository_message(&actual, _repo));
cl_assert_equal_s(expected, _actual); cl_assert_equal_s(expected, git_buf_cstr(&actual));
git_buf_free(&_actual); git_buf_free(&actual);
cl_git_pass(p_unlink(git_buf_cstr(&_path))); cl_git_pass(p_unlink(git_buf_cstr(&path)));
cl_assert_equal_i(GIT_ENOTFOUND, git_repository_message(&_actual, _repo)); cl_assert_equal_i(GIT_ENOTFOUND, git_repository_message(&actual, _repo));
git_buf_free(&path);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment