reference_rename: fix flaw in force-renaming

reference_rename didn't respect the force flag. Fixed.

Reported-by: nulltoken <emeric.fermas@gmail.com>
Signed-off-by: schu <schu-github@schulog.org>
This commit is contained in:
schu 2011-07-07 21:24:12 +02:00
parent 6d4f090df6
commit 7329433944

View File

@ -1309,9 +1309,13 @@ int git_reference_rename(git_reference *ref, const char *new_name, int force)
new_name = normalized; new_name = normalized;
error = git_reference_lookup(&new_ref, ref->owner, new_name); error = git_reference_lookup(&new_ref, ref->owner, new_name);
if (error == GIT_SUCCESS && !force) if (error == GIT_SUCCESS) {
if (!force)
return git__throw(GIT_EEXISTS, "Failed to rename reference. Reference already exists"); return git__throw(GIT_EEXISTS, "Failed to rename reference. Reference already exists");
error = git_reference_delete(new_ref);
}
if (error < GIT_SUCCESS && error != GIT_ENOTFOUND) if (error < GIT_SUCCESS && error != GIT_ENOTFOUND)
goto cleanup; goto cleanup;