Commit 97a17e4e by Russell Belfer

Fix valgrind warnings and spurious error messages

Just clean up valgrind warnings about uninitialized memory
and also clear out errno in some cases where it results in
a false error message being generated at a later point.
parent 5f4a61ae
......@@ -31,7 +31,7 @@ typedef struct tree_walk_data
git_checkout_opts *opts;
git_repository *repo;
git_odb *odb;
bool do_symlinks;
bool no_symlinks;
} tree_walk_data;
......@@ -48,9 +48,9 @@ static int blob_contents_to_link(tree_walk_data *data, git_buf *fnbuf,
/* Create the link */
const char *new = git_buf_cstr(&linktarget),
*old = git_buf_cstr(fnbuf);
retcode = data->do_symlinks
? p_symlink(new, old)
: git_futils_fake_symlink(new, old);
retcode = data->no_symlinks
? git_futils_fake_symlink(new, old)
: p_symlink(new, old);
}
git_buf_free(&linktarget);
git_blob_free(blob);
......@@ -176,13 +176,14 @@ int git_checkout_head(git_repository *repo, git_checkout_opts *opts, git_indexer
return GIT_ERROR;
}
memset(&payload, 0, sizeof(payload));
/* Determine if symlinks should be handled */
if (!git_repository_config(&cfg, repo)) {
if (!git_repository_config__weakptr(&cfg, repo)) {
int temp = true;
if (!git_config_get_bool(&temp, cfg, "core.symlinks")) {
payload.do_symlinks = !!temp;
payload.no_symlinks = !temp;
}
git_config_free(cfg);
}
stats->total = stats->processed = 0;
......
......@@ -110,6 +110,11 @@ void giterr_set_regex(const regex_t *regex, int error_code)
void giterr_clear(void)
{
GIT_GLOBAL->last_error = NULL;
errno = 0;
#ifdef GIT_WIN32
SetLastError(0);
#endif
}
const git_error *giterr_last(void)
......
......@@ -50,6 +50,7 @@ static int lock_file(git_filebuf *file, int flags)
if (flags & GIT_FILEBUF_FORCE)
p_unlink(file->path_lock);
else {
giterr_clear(); /* actual OS error code just confuses */
giterr_set(GITERR_OS,
"Failed to lock file '%s' for writing", file->path_lock);
return -1;
......
......@@ -367,6 +367,8 @@ int git_submodule_add_to_index(git_submodule *sm, int write_index)
error = -1;
goto cleanup;
}
memset(&entry, 0, sizeof(entry));
entry.path = sm->path;
git_index__init_entry_from_stat(&st, &entry);
......
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