summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2013-02-15 16:02:45 -0800
committerRussell Belfer <rb@github.com>2013-02-15 16:02:45 -0800
commit56543a609aa7adb14b308046445ddd48f44322b7 (patch)
treeda381d33ee3e01de4f957bf748dacb749a55be3a /src
parent71d62d3905723c0263ca00a1d68825e2c35fb987 (diff)
downloadlibgit2-56543a609aa7adb14b308046445ddd48f44322b7.tar.gz
Clear up warnings from cppcheck
The cppcheck static analyzer generates warnings for a bunch of places in the libgit2 code base. All the ones fixed in this commit are actually false positives, but I've reorganized the code to hopefully make it easier for static analysis tools to correctly understand the structure. I wouldn't do this if I felt like it was making the code harder to read or worse for humans, but in this case, these fixes don't seem too bad and will hopefully make it easier for better analysis tools to get at any real issues.
Diffstat (limited to 'src')
-rw-r--r--src/checkout.c10
-rw-r--r--src/diff_output.c11
-rw-r--r--src/notes.c2
-rw-r--r--src/refs.c2
-rw-r--r--src/transports/winhttp.c2
5 files changed, 16 insertions, 11 deletions
diff --git a/src/checkout.c b/src/checkout.c
index 0ce283beb..59cd218a9 100644
--- a/src/checkout.c
+++ b/src/checkout.c
@@ -64,6 +64,7 @@ static int checkout_notify(
{
git_diff_file wdfile;
const git_diff_file *baseline = NULL, *target = NULL, *workdir = NULL;
+ const char *path = NULL;
if (!data->opts.notify_cb)
return 0;
@@ -81,6 +82,8 @@ static int checkout_notify(
wdfile.mode = wditem->mode;
workdir = &wdfile;
+
+ path = wditem->path;
}
if (delta) {
@@ -101,11 +104,12 @@ static int checkout_notify(
baseline = &delta->old_file;
break;
}
+
+ path = delta->old_file.path;
}
return data->opts.notify_cb(
- why, delta ? delta->old_file.path : wditem->path,
- baseline, target, workdir, data->opts.notify_payload);
+ why, path, baseline, target, workdir, data->opts.notify_payload);
}
static bool checkout_is_workdir_modified(
@@ -683,7 +687,7 @@ static int blob_content_to_file(
{
int error = -1, nb_filters = 0;
mode_t file_mode = opts->file_mode;
- bool dont_free_filtered = false;
+ bool dont_free_filtered;
git_buf unfiltered = GIT_BUF_INIT, filtered = GIT_BUF_INIT;
git_vector filters = GIT_VECTOR_INIT;
diff --git a/src/diff_output.c b/src/diff_output.c
index 26b073aad..88ccc9d45 100644
--- a/src/diff_output.c
+++ b/src/diff_output.c
@@ -1280,14 +1280,15 @@ static void set_data_from_buffer(
{
file->size = (git_off_t)buffer_len;
file->mode = 0644;
+ map->len = buffer_len;
- if (!buffer)
+ if (!buffer) {
file->flags |= GIT_DIFF_FILE_NO_DATA;
- else
+ map->data = NULL;
+ } else {
+ map->data = (char *)buffer;
git_odb_hash(&file->oid, buffer, buffer_len, GIT_OBJ_BLOB);
-
- map->len = buffer_len;
- map->data = (char *)buffer;
+ }
}
typedef struct {
diff --git a/src/notes.c b/src/notes.c
index eff80bc82..f5537db3f 100644
--- a/src/notes.c
+++ b/src/notes.c
@@ -147,7 +147,7 @@ static int manipulate_note_in_tree_r(
int fanout,
int current_error))
{
- int error = -1;
+ int error;
git_tree *subtree = NULL, *new = NULL;
char subtree_name[3];
diff --git a/src/refs.c b/src/refs.c
index 7dabfefae..866c230e6 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -1493,7 +1493,7 @@ int git_reference_foreach(
/* list all the packed references first */
if (list_flags & GIT_REF_PACKED) {
const char *ref_name;
- void *ref;
+ void *ref = NULL;
GIT_UNUSED(ref);
if (packed_load(repo) < 0)
diff --git a/src/transports/winhttp.c b/src/transports/winhttp.c
index 64bfece34..970fa53bd 100644
--- a/src/transports/winhttp.c
+++ b/src/transports/winhttp.c
@@ -88,7 +88,7 @@ static int apply_basic_credential(HINTERNET request, git_cred *cred)
git_cred_userpass_plaintext *c = (git_cred_userpass_plaintext *)cred;
git_buf buf = GIT_BUF_INIT, raw = GIT_BUF_INIT;
wchar_t *wide = NULL;
- int error = -1, wide_len;
+ int error = -1, wide_len = 0;
git_buf_printf(&raw, "%s:%s", c->username, c->password);