summaryrefslogtreecommitdiff
path: root/worktree.c
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2016-05-22 16:33:52 +0700
committerJunio C Hamano <gitster@pobox.com>2016-05-24 13:19:22 -0700
commit360af2dadaae70f29de2f21d4eb8ac38aefcc263 (patch)
treef1be3a21d431e8e6321c00809d90a51169fdd222 /worktree.c
parentb462c024022e3a41821f24bca9e43f16973693db (diff)
downloadgit-360af2dadaae70f29de2f21d4eb8ac38aefcc263.tar.gz
worktree.c: rewrite mark_current_worktree() to avoid strbuf
strbuf is a bit overkill for this function. What we need is to call absolute_path() twice and make sure the second call does not destroy the result of the first. One buffer allocation is enough. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Reviewed-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'worktree.c')
-rw-r--r--worktree.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/worktree.c b/worktree.c
index 4817d60055..6a11611e60 100644
--- a/worktree.c
+++ b/worktree.c
@@ -153,21 +153,19 @@ done:
static void mark_current_worktree(struct worktree **worktrees)
{
- struct strbuf git_dir = STRBUF_INIT;
- struct strbuf path = STRBUF_INIT;
+ char *git_dir = xstrdup(absolute_path(get_git_dir()));
int i;
- strbuf_addstr(&git_dir, absolute_path(get_git_dir()));
for (i = 0; worktrees[i]; i++) {
struct worktree *wt = worktrees[i];
- strbuf_addstr(&path, absolute_path(get_worktree_git_dir(wt)));
- wt->is_current = !fspathcmp(git_dir.buf, path.buf);
- strbuf_reset(&path);
- if (wt->is_current)
+ const char *wt_git_dir = get_worktree_git_dir(wt);
+
+ if (!fspathcmp(git_dir, absolute_path(wt_git_dir))) {
+ wt->is_current = 1;
break;
+ }
}
- strbuf_release(&git_dir);
- strbuf_release(&path);
+ free(git_dir);
}
struct worktree **get_worktrees(void)