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

[PATCH v2 2/7] prune_remote(): initialize both delete_refs lists in a single loop

From
Michael Haggerty <mhagger@alum.mit.edu>
Date
Nov 25, 2014, 08:02 UTC
Message-ID
<1416902555-10748-3-git-send-email-mhagger@alum.mit.edu>
In-Reply-To
<1416902555-10748-1-git-send-email-mhagger@alum.mit.edu>
Also free them together at the end of the function.

In a moment, the array version will become redundant. Managing them together makes later steps more obvious.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
---
 builtin/remote.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/builtin/remote.c b/builtin/remote.c
index d2b684c..d5a5a16 100644
--- a/builtin/remote.c
+++ b/builtin/remote.c
@@ -1337,8 +1337,13 @@ static int prune_remote(const char *remote, int dry_run)
 		  : _("(no URL)"));
 
 	delete_refs = xmalloc(states.stale.nr * sizeof(*delete_refs));
-	for (i = 0; i < states.stale.nr; i++)
-		delete_refs[i] = states.stale.items[i].util;
+	for (i = 0; i < states.stale.nr; i++) {
+		const char *refname = states.stale.items[i].util;
+
+		delete_refs[i] = refname;
+		string_list_insert(&delete_refs_list, refname);
+	}
+
 	if (!dry_run) {
 		struct strbuf err = STRBUF_INIT;
 		if (repack_without_refs(delete_refs, states.stale.nr,
@@ -1346,13 +1351,10 @@ static int prune_remote(const char *remote, int dry_run)
 			result |= error("%s", err.buf);
 		strbuf_release(&err);
 	}
-	free(delete_refs);
 
 	for (i = 0; i < states.stale.nr; i++) {
 		const char *refname = states.stale.items[i].util;
 
-		string_list_insert(&delete_refs_list, refname);
-
 		if (!dry_run)
 			result |= delete_ref(refname, NULL, 0);
 
@@ -1365,8 +1367,9 @@ static int prune_remote(const char *remote, int dry_run)
 	}
 
 	warn_dangling_symrefs(stdout, dangling_msg, &delete_refs_list);
-	string_list_clear(&delete_refs_list, 0);
 
+	free(delete_refs);
+	string_list_clear(&delete_refs_list, 0);
 	free_remote_ref_states(&states);
 	return result;
 }
-- 
2.1.3
Previous: Junio C HamanoNext: Michael Haggerty
Message 4 of 12 in “repack_without_refs(): convert to string_list”
  1. 0/7 repack_without_refs(): convert to string_listMichael Haggerty, Nov 25, 2014
  2. 1/7 prune_remote(): exit early if there are no stale referencesMichael Haggerty, Nov 25, 2014
  3. Junio C HamanoNov 25, 2014
  4. 2/7 prune_remote(): initialize both delete_refs lists in a single loopMichael Haggerty, Nov 25, 2014
  5. 3/7 prune_remote(): sort delete_refs_list references en masseMichael Haggerty, Nov 25, 2014
  6. 4/7 repack_without_refs(): make the refnames argument a string_listMichael Haggerty, Nov 25, 2014
  7. 5/7 prune_remote(): rename local variableMichael Haggerty, Nov 25, 2014
  8. 6/7 prune_remote(): iterate using for_each_string_list_item()Michael Haggerty, Nov 25, 2014
  9. 7/7 Rename sort_string_list() to string_list_sort()Michael Haggerty, Nov 25, 2014
  10. Junio C HamanoNov 25, 2014
  11. Stefan BellerNov 26, 2014
  12. Junio C HamanoNov 26, 2014

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.