diff --git a/src/attr.c b/src/attr.c index ff4446e2f..15ed5c9e0 100644 --- a/src/attr.c +++ b/src/attr.c @@ -49,6 +49,8 @@ int git_attr_get( git_attr_name attr; git_attr_rule *rule; + assert(value && repo && name); + *value = NULL; if (git_attr_path__init(&path, pathname, git_repository_workdir(repo)) < 0) @@ -103,6 +105,11 @@ int git_attr_get_many( attr_get_many_info *info = NULL; size_t num_found = 0; + if (!num_attr) + return 0; + + assert(values && repo && names); + if (git_attr_path__init(&path, pathname, git_repository_workdir(repo)) < 0) return -1; @@ -169,6 +176,8 @@ int git_attr_foreach( git_attr_assignment *assign; git_strmap *seen = NULL; + assert(repo && callback); + if (git_attr_path__init(&path, pathname, git_repository_workdir(repo)) < 0) return -1; diff --git a/src/branch.c b/src/branch.c index a1a04b2b4..d0dc21b85 100644 --- a/src/branch.c +++ b/src/branch.c @@ -21,27 +21,22 @@ static int retrieve_branch_reference( const char *branch_name, int is_remote) { - git_reference *branch; - int error = -1; + git_reference *branch = NULL; + int error = 0; char *prefix; git_buf ref_name = GIT_BUF_INIT; - *branch_reference_out = NULL; - prefix = is_remote ? GIT_REFS_REMOTES_DIR : GIT_REFS_HEADS_DIR; - if (git_buf_joinpath(&ref_name, prefix, branch_name) < 0) - goto cleanup; + if ((error = git_buf_joinpath(&ref_name, prefix, branch_name)) < 0) + /* OOM */; + else if ((error = git_reference_lookup(&branch, repo, ref_name.ptr)) < 0) + giterr_set( + GITERR_REFERENCE, "Cannot locate %s branch '%s'", + is_remote ? "remote-tracking" : "local", branch_name); - if ((error = git_reference_lookup(&branch, repo, ref_name.ptr)) < 0) { - giterr_set(GITERR_REFERENCE, - "Cannot locate %s branch '%s'.", is_remote ? "remote-tracking" : "local", branch_name); - goto cleanup; - } + *branch_reference_out = branch; /* will be NULL on error */ - *branch_reference_out = branch; - -cleanup: git_buf_free(&ref_name); return error; } @@ -63,21 +58,19 @@ int git_branch_create( { git_reference *branch = NULL; git_buf canonical_branch_name = GIT_BUF_INIT; - int error = -1; + int error = 0; assert(branch_name && commit && ref_out); assert(git_object_owner((const git_object *)commit) == repository); - if (git_buf_joinpath(&canonical_branch_name, GIT_REFS_HEADS_DIR, branch_name) < 0) - goto cleanup; + if (!(error = git_buf_joinpath( + &canonical_branch_name, GIT_REFS_HEADS_DIR, branch_name))) + error = git_reference_create( + &branch, repository, git_buf_cstr(&canonical_branch_name), + git_commit_id(commit), force, NULL, NULL); - error = git_reference_create(&branch, repository, - git_buf_cstr(&canonical_branch_name), git_commit_id(commit), force, NULL, NULL); + *ref_out = branch; - if (!error) - *ref_out = branch; - -cleanup: git_buf_free(&canonical_branch_name); return error; } diff --git a/tests/status/renames.c b/tests/status/renames.c index a81910e36..df5e23087 100644 --- a/tests/status/renames.c +++ b/tests/status/renames.c @@ -560,7 +560,6 @@ void test_status_renames__zero_byte_file_does_not_fail(void) { git_status_list *statuslist; git_status_options opts = GIT_STATUS_OPTIONS_INIT; - status_entry_counts counts = {0}; struct status_entry expected[] = { { GIT_STATUS_WT_DELETED, "ikeepsix.txt", "ikeepsix.txt" },