diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-12-19 16:05:50 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-12-19 16:05:50 -0800 |
commit | 2e05710a161e6287f239fae42b86b0cb46190834 (patch) | |
tree | a2dd4d1acc86d20f7888ee4f09f7d54d600ff33e /builtin/checkout.c | |
parent | b8fc5abd73e2e81c396844c09e8003de320709e5 (diff) | |
parent | 8cad4744ee37ebec1d9491a1381ec1771a1ba795 (diff) | |
download | git-2e05710a161e6287f239fae42b86b0cb46190834.tar.gz |
Merge branch 'nd/resolve-ref'
* nd/resolve-ref:
Rename resolve_ref() to resolve_ref_unsafe()
Convert resolve_ref+xstrdup to new resolve_refdup function
revert: convert resolve_ref() to read_ref_full()
Diffstat (limited to 'builtin/checkout.c')
-rw-r--r-- | builtin/checkout.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/builtin/checkout.c b/builtin/checkout.c index fdd2e0b9d8..011c0561d9 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -705,17 +705,14 @@ static int switch_branches(struct checkout_opts *opts, struct branch_info *new) { int ret = 0; struct branch_info old; + void *path_to_free; unsigned char rev[20]; int flag; memset(&old, 0, sizeof(old)); - old.path = resolve_ref("HEAD", rev, 0, &flag); - if (old.path) - old.path = xstrdup(old.path); + old.path = path_to_free = resolve_refdup("HEAD", rev, 0, &flag); old.commit = lookup_commit_reference_gently(rev, 1); - if (!(flag & REF_ISSYMREF)) { - free((char *)old.path); + if (!(flag & REF_ISSYMREF)) old.path = NULL; - } if (old.path && !prefixcmp(old.path, "refs/heads/")) old.name = old.path + strlen("refs/heads/"); @@ -729,8 +726,10 @@ static int switch_branches(struct checkout_opts *opts, struct branch_info *new) } ret = merge_working_tree(opts, &old, new); - if (ret) + if (ret) { + free(path_to_free); return ret; + } if (!opts->quiet && !old.path && old.commit && new->commit != old.commit) orphaned_commit_warning(old.commit); @@ -738,7 +737,7 @@ static int switch_branches(struct checkout_opts *opts, struct branch_info *new) update_refs_for_switch(opts, &old, new); ret = post_checkout_hook(old.commit, new->commit, 1); - free((char *)old.path); + free(path_to_free); return ret || opts->writeout_error; } |