summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBen Straub <bs@github.com>2012-10-11 15:45:26 -0700
committerBen Straub <bs@github.com>2012-10-11 15:45:26 -0700
commit80a6e86bb626acbf19088a9c8e780ebf151cd040 (patch)
treee448aa06ca71028960072a769160fc8ad74fb23b /src
parent26ddcfa4c4f3c404de6b7a12f803e43ff507c06f (diff)
parentb73200c1ed55941bf165e1f10b5e42c7608d3f18 (diff)
downloadlibgit2-80a6e86bb626acbf19088a9c8e780ebf151cd040.tar.gz
Merge pull request #974 from nulltoken/EEXISTS
Enforce returning of EEXISTS when trying to overwrite a reference
Diffstat (limited to 'src')
-rw-r--r--src/branch.c9
-rw-r--r--src/refs.c4
2 files changed, 6 insertions, 7 deletions
diff --git a/src/branch.c b/src/branch.c
index 6d497b055..d0bd1c45b 100644
--- a/src/branch.c
+++ b/src/branch.c
@@ -77,12 +77,11 @@ int git_branch_create(
if (git_buf_joinpath(&canonical_branch_name, GIT_REFS_HEADS_DIR, branch_name) < 0)
goto cleanup;
- if (git_reference_create_oid(&branch, repository,
- git_buf_cstr(&canonical_branch_name), git_object_id(commit), force) < 0)
- goto cleanup;
+ error = git_reference_create_oid(&branch, repository,
+ git_buf_cstr(&canonical_branch_name), git_object_id(commit), force);
- *ref_out = branch;
- error = 0;
+ if (!error)
+ *ref_out = branch;
cleanup:
git_object_free(commit);
diff --git a/src/refs.c b/src/refs.c
index 9dc422e1b..1d73b2677 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -1357,8 +1357,8 @@ int git_reference_rename(git_reference *ref, const char *new_name, int force)
normalization_flags) < 0)
return -1;
- if (reference_can_write(ref->owner, normalized, ref->name, force) < 0)
- return -1;
+ if ((result = reference_can_write(ref->owner, normalized, ref->name, force)) < 0)
+ return result;
/* Initialize path now so we won't get an allocation failure once
* we actually start removing things. */