And remove the function write_ref_sha1(), as it is no longer used.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-/*
- * Write sha1 as the new value of the reference specified by the
- * (open) lock. On error, roll back the lockfile and set errno
- * appropriately.
- */
-static int write_ref_sha1(struct ref_lock *lock,
- const unsigned char *sha1, const char *logmsg)
-{
- if (!lock) {
- errno = EINVAL;
- return -1;
- }
- if (!lock->force_write && !hashcmp(lock->old_sha1, sha1)) {
- unlock_ref(lock);
- return 0;
- }
-
- if (write_ref_to_lockfile(lock, sha1) ||
- commit_ref_update(lock, sha1, logmsg))
- return -1;
-
- return 0;
-}
-
int create_symref(const char *ref_target, const char *refs_heads_master,
const char *logmsg)
{
int create_symref(const char *ref_target, const char *refs_heads_master,
const char *logmsg)
{
struct ref_update *update = updates[i];
if (!is_null_sha1(update->new_sha1)) {
struct ref_update *update = updates[i];
if (!is_null_sha1(update->new_sha1)) {
- if (write_ref_sha1(update->lock, update->new_sha1,
- update->msg)) {
- update->lock = NULL; /* freed by write_ref_sha1 */
+ if (!update->lock->force_write &&
+ !hashcmp(update->lock->old_sha1, update->new_sha1)) {
+ unlock_ref(update->lock);
+ update->lock = NULL;
+ } else if (write_ref_to_lockfile(update->lock, update->new_sha1) ||
+ commit_ref_update(update->lock, update->new_sha1, update->msg)) {
+ update->lock = NULL; /* freed by the above calls */
strbuf_addf(err, "Cannot update the ref '%s'.",
update->refname);
ret = TRANSACTION_GENERIC_ERROR;
goto cleanup;
strbuf_addf(err, "Cannot update the ref '%s'.",
update->refname);
ret = TRANSACTION_GENERIC_ERROR;
goto cleanup;
+ } else {
+ /* freed by the above calls: */
+ update->lock = NULL;
- update->lock = NULL; /* freed by write_ref_sha1 */