fix for more minor memory leaks
[gitweb.git] / builtin-show-branch.c
index c892f1f7a643b3d7e5c298837424a72cbc2c4f78..07a0c2316bec4dd8341ea494b02874a1b12483cd 100644 (file)
@@ -259,17 +259,18 @@ static void join_revs(struct commit_list **list_p,
 
 static void show_one_commit(struct commit *commit, int no_name)
 {
-       char pretty[256], *cp;
+       struct strbuf pretty;
+       const char *pretty_str = "(unavailable)";
        struct commit_name *name = commit->util;
-       if (commit->object.parsed)
-               pretty_print_commit(CMIT_FMT_ONELINE, commit, ~0,
-                                   pretty, sizeof(pretty), 0, NULL, NULL, 0);
-       else
-               strcpy(pretty, "(unavailable)");
-       if (!prefixcmp(pretty, "[PATCH] "))
-               cp = pretty + 8;
-       else
-               cp = pretty;
+
+       strbuf_init(&pretty, 0);
+       if (commit->object.parsed) {
+               pretty_print_commit(CMIT_FMT_ONELINE, commit,
+                                       &pretty, 0, NULL, NULL, 0);
+               pretty_str = pretty.buf;
+       }
+       if (!prefixcmp(pretty_str, "[PATCH] "))
+               pretty_str += 8;
 
        if (!no_name) {
                if (name && name->head_name) {
@@ -286,7 +287,8 @@ static void show_one_commit(struct commit *commit, int no_name)
                        printf("[%s] ",
                               find_unique_abbrev(commit->object.sha1, 7));
        }
-       puts(cp);
+       puts(pretty_str);
+       strbuf_release(&pretty);
 }
 
 static char *ref_name[MAX_REVS + 1];