git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/5] write_ref_sha1(): inline function at callers

From
Michael Haggerty <mhagger@alum.mit.edu>
Date
Apr 24, 2015, 11:35 UTC
Message-ID
<1429875349-29736-4-git-send-email-mhagger@alum.mit.edu>
In-Reply-To
<1429875349-29736-1-git-send-email-mhagger@alum.mit.edu>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
---
 refs.c | 38 +++++++++++++++-----------------------
 1 file changed, 15 insertions(+), 23 deletions(-)
diff --git a/refs.c b/refs.c
index 9b68aec..a55d541 100644
--- a/refs.c
+++ b/refs.c
@@ -2770,8 +2770,10 @@ static int rename_ref_available(const char *oldname, const char *newname)
 	return ret;
 }
 
-static int write_ref_sha1(struct ref_lock *lock, const unsigned char *sha1,
-			  const char *logmsg);
+static int write_ref_to_lockfile(struct ref_lock *lock,
+				 const unsigned char *sha1);
+static int commit_ref_update(struct ref_lock *lock,
+			     const unsigned char *sha1, const char *logmsg);
 
 int rename_ref(const char *oldrefname, const char *newrefname, const char *logmsg)
 {
@@ -2829,7 +2831,8 @@ int rename_ref(const char *oldrefname, const char *newrefname, const char *logms
 		goto rollback;
 	}
 	hashcpy(lock->old_sha1, orig_sha1);
-	if (write_ref_sha1(lock, orig_sha1, logmsg)) {
+	if (write_ref_to_lockfile(lock, orig_sha1) ||
+	    commit_ref_update(lock, orig_sha1, logmsg)) {
 		error("unable to write current sha1 into %s", newrefname);
 		goto rollback;
 	}
@@ -2845,7 +2848,8 @@ int rename_ref(const char *oldrefname, const char *newrefname, const char *logms
 
 	flag = log_all_ref_updates;
 	log_all_ref_updates = 0;
-	if (write_ref_sha1(lock, orig_sha1, NULL))
+	if (write_ref_to_lockfile(lock, orig_sha1) ||
+	    commit_ref_update(lock, orig_sha1, NULL))
 		error("unable to write current sha1 into %s", oldrefname);
 	log_all_ref_updates = flag;
 
@@ -3093,21 +3097,6 @@ static int commit_ref_update(struct ref_lock *lock,
 	return 0;
 }
 
-/*
- * 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 (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)
 {
@@ -3801,15 +3790,18 @@ int ref_transaction_commit(struct ref_transaction *transaction,
 				 */
 				unlock_ref(update->lock);
 				update->lock = NULL;
-			} else if (write_ref_sha1(update->lock, update->new_sha1,
-						  update->msg)) {
-				update->lock = NULL; /* freed by write_ref_sha1 */
+			} 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;
 			} else {
-				/* freed by write_ref_sha1(): */
+				/* freed by the above calls: */
 				update->lock = NULL;
 			}
 		}
-- 
2.1.4
Previous: Michael HaggertyNext: Michael Haggerty
Message 4 of 19 in “Avoid file descriptor exhaustion in ref_transaction_commit()”
  1. 0/5 Avoid file descriptor exhaustion in ref_transaction_commit()Michael Haggerty, Apr 24, 2015
  2. 1/5 write_ref_to_lockfile(): new function, extracted from write_ref_sha1()Michael Haggerty, Apr 24, 2015
  3. 2/5 commit_ref_update(): new function, extracted from write_ref_sha1()Michael Haggerty, Apr 24, 2015
  4. 3/5 write_ref_sha1(): inline function at callersMichael Haggerty, Apr 24, 2015
  5. 4/5 ref_transaction_commit(): remove the local flags variablesMichael Haggerty, Apr 24, 2015
  6. Jeff KingApr 24, 2015
  7. Michael HaggertyApr 24, 2015
  8. Jeff KingApr 24, 2015
  9. Eric SunshineApr 24, 2015
  10. Michael HaggertyApr 24, 2015
  11. 5/5 ref_transaction_commit(): only keep one lockfile open at a timeMichael Haggerty, Apr 24, 2015
  12. Michael HaggertyApr 25, 2015
  13. Junio C HamanoApr 25, 2015
  14. Junio C HamanoApr 25, 2015
  15. Jeff KingApr 28, 2015
  16. Jeff KingApr 24, 2015
  17. Stefan BellerApr 24, 2015
  18. Junio C HamanoApr 25, 2015
  19. Junio C HamanoApr 25, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.