From d3f9f9a92eca0dd6379d836a083e823cc5e3eeb6 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Mon, 17 Nov 2008 21:48:36 +0100 Subject: [PATCH] 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 Signed-off-by: Junio C Hamano --- builtin-branch.c | 18 ++++++++---------- 1 file 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, -- 2.11.4.GIT