create_symref: write reflog while holding lock
[gitweb.git] / refs / files-backend.c
index 3d1994debd4214b8e3a257576d7f8b09dbdb06f2..180c837d11f75249049e9732905c05d67e7b583f 100644 (file)
@@ -2850,12 +2850,13 @@ static int create_symref_locked(struct ref_lock *lock, const char *refname,
                return error("unable to fdopen %s: %s",
                             lock->lk->tempfile.filename.buf, strerror(errno));
 
+       update_symref_reflog(lock, refname, target, logmsg);
+
        /* no error check; commit_ref will check ferror */
        fprintf(lock->lk->tempfile.fp, "ref: %s\n", target);
        if (commit_ref(lock) < 0)
                return error("unable to write symref for %s: %s", refname,
                             strerror(errno));
-       update_symref_reflog(lock, refname, target, logmsg);
        return 0;
 }