summaryrefslogtreecommitdiff
path: root/builtin-branch.c
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@frugalware.org>2008-11-17 21:48:36 +0100
committerJunio C Hamano <gitster@pobox.com>2008-11-18 15:41:30 -0800
commitd3f9f9a92eca0dd6379d836a083e823cc5e3eeb6 (patch)
treef16c29769539ffa9ea13376954c2773cb3b4f81b /builtin-branch.c
parent3c59c50d76cd479caf14cab73fdb09b68597d5e5 (diff)
downloadgit-d3f9f9a92eca0dd6379d836a083e823cc5e3eeb6.tar.gz
builtin-branch: use strbuf in fill_tracking_info()
This is just about using the API, though in case of ~ 10^100 commits, this would fix the problem of writing to unallocated memory as well. ;-) Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-branch.c')
-rw-r--r--builtin-branch.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/builtin-branch.c b/builtin-branch.c
index b9149b78f4..c8a8e2a2f4 100644
--- a/builtin-branch.c
+++ b/builtin-branch.c
@@ -279,7 +279,7 @@ static int ref_cmp(const void *r1, const void *r2)
return strcmp(c1->name, c2->name);
}
-static void fill_tracking_info(char *stat, const char *branch_name)
+static void fill_tracking_info(struct strbuf *stat, const char *branch_name)
{
int ours, theirs;
struct branch *branch = branch_get(branch_name);
@@ -287,11 +287,11 @@ static void fill_tracking_info(char *stat, const char *branch_name)
if (!stat_tracking_info(branch, &ours, &theirs) || (!ours && !theirs))
return;
if (!ours)
- sprintf(stat, "[behind %d] ", theirs);
+ strbuf_addf(stat, "[behind %d] ", theirs);
else if (!theirs)
- sprintf(stat, "[ahead %d] ", ours);
+ strbuf_addf(stat, "[ahead %d] ", ours);
else
- sprintf(stat, "[ahead %d, behind %d] ", ours, theirs);
+ strbuf_addf(stat, "[ahead %d, behind %d] ", ours, theirs);
}
static int matches_merge_filter(struct commit *commit)
@@ -334,11 +334,8 @@ static void print_ref_item(struct ref_item *item, int maxwidth, int verbose,
}
if (verbose) {
- struct strbuf subject = STRBUF_INIT;
+ struct strbuf subject = STRBUF_INIT, stat = STRBUF_INIT;
const char *sub = " **** invalid ref ****";
- char stat[128];
-
- stat[0] = '\0';
commit = item->commit;
if (commit && !parse_commit(commit)) {
@@ -348,13 +345,14 @@ static void print_ref_item(struct ref_item *item, int maxwidth, int verbose,
}
if (item->kind == REF_LOCAL_BRANCH)
- fill_tracking_info(stat, item->name);
+ fill_tracking_info(&stat, item->name);
printf("%c %s%-*s%s %s %s%s\n", c, branch_get_color(color),
maxwidth, item->name,
branch_get_color(COLOR_BRANCH_RESET),
find_unique_abbrev(item->commit->object.sha1, abbrev),
- stat, sub);
+ stat.buf, sub);
+ strbuf_release(&stat);
strbuf_release(&subject);
} else {
printf("%c %s%s%s\n", c, branch_get_color(color), item->name,