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

[PATCH v2 04/20] checkout: die_if_checked_out: simplify strbuf management

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Jul 16, 2015, 08:20 UTC
Message-ID
<1437034825-32054-5-git-send-email-sunshine@sunshineco.com>
In-Reply-To
<1437034825-32054-1-git-send-email-sunshine@sunshineco.com>

There is no reason to keep the strbuf active long after its last use. By releasing it as early as possible, resource management is simplified and there is less worry about future changes resulting in a leak.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
---
No changes since v1.
 builtin/checkout.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/builtin/checkout.c b/builtin/checkout.c
index 1992c41..c36bf8a 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -924,17 +924,16 @@ static void die_if_checked_out(struct branch_info *new)
 	check_linked_checkout(new, NULL);
 
 	strbuf_addf(&path, "%s/worktrees", get_git_common_dir());
-	if ((dir = opendir(path.buf)) == NULL) {
-		strbuf_release(&path);
+	dir = opendir(path.buf);
+	strbuf_release(&path);
+	if (!dir)
 		return;
-	}
 
 	while ((d = readdir(dir)) != NULL) {
 		if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, ".."))
 			continue;
 		check_linked_checkout(new, d->d_name);
 	}
-	strbuf_release(&path);
 	closedir(dir);
 }
 
-- 
2.5.0.rc2.378.g0af52e8
Previous: Eric SunshineNext: Eric Sunshine
Message 5 of 25 in “rid git-checkout of too-intimate knowledge of new worktree”
  1. 00/20 rid git-checkout of too-intimate knowledge of new worktreeEric Sunshine, Jul 16, 2015
  2. 01/20 checkout: avoid resolving HEAD unnecessarilyEric Sunshine, Jul 16, 2015
  3. 02/20 checkout: name check_linked_checkouts() more meaningfullyEric Sunshine, Jul 16, 2015
  4. 03/20 checkout: improve die_if_checked_out() robustnessEric Sunshine, Jul 16, 2015
  5. 04/20 checkout: die_if_checked_out: simplify strbuf managementEric Sunshine, Jul 16, 2015
  6. 05/20 checkout: generalize die_if_checked_out() branch name argumentEric Sunshine, Jul 16, 2015
  7. 06/20 checkout: check_linked_checkout: improve "already checked out" aestheticEric Sunshine, Jul 16, 2015
  8. Junio C HamanoJul 16, 2015
  9. Eric SunshineJul 17, 2015
  10. Duy NguyenJul 17, 2015
  11. 07/20 checkout: check_linked_checkout: simplify symref parsingEric Sunshine, Jul 16, 2015
  12. 08/20 checkout: teach check_linked_checkout() about symbolic link HEADEric Sunshine, Jul 16, 2015
  13. 09/20 branch: publish die_if_checked_out()Eric Sunshine, Jul 16, 2015
  14. 10/20 worktree: simplify new branch (-b/-B) option checkingEric Sunshine, Jul 16, 2015
  15. 11/20 worktree: introduce options containerEric Sunshine, Jul 16, 2015
  16. 12/20 worktree: make --detach mutually exclusive with -b/-BEric Sunshine, Jul 16, 2015
  17. 13/20 worktree: make branch creation distinct from worktree populationEric Sunshine, Jul 16, 2015
  18. 14/20 worktree: elucidate environment variables intended for child processesEric Sunshine, Jul 16, 2015
  19. 15/20 worktree: add_worktree: construct worktree-population command locallyEric Sunshine, Jul 16, 2015
  20. 16/20 worktree: detect branch-name/detached and error conditions locallyEric Sunshine, Jul 16, 2015
  21. 17/20 worktree: make setup of new HEAD distinct from worktree populationEric Sunshine, Jul 16, 2015
  22. 18/20 worktree: avoid resolving HEAD unnecessarilyEric Sunshine, Jul 16, 2015
  23. 19/20 worktree: populate via "git reset --hard" rather than "git checkout"Eric Sunshine, Jul 16, 2015
  24. 20/20 checkout: drop intimate knowledge of newly created worktreeEric Sunshine, Jul 16, 2015
  25. Junio C HamanoJul 16, 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.