builtin-commit: fix reflog message generation
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>
Thu, 8 Nov 2007 12:15:26 +0000 (12:15 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 23 Nov 2007 01:05:02 +0000 (17:05 -0800)
Instead of strdup()ing, we can just reuse the buffer in which the
commit message is stored, and which is supposed to hold the reflog
message anyway.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-commit.c

index 669cc6b6f1da42551f490d001b7d641cef38e8b5..c8f79a88fb16b0ab142ea95790dbb9593f386d3d 100644 (file)
@@ -488,7 +488,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
        int header_len, parent_count = 0;
        struct strbuf sb;
        const char *index_file, *reflog_msg;
-       char *nl, *header_line;
+       char *nl;
        unsigned char commit_sha1[20];
        struct ref_lock *ref_lock;
 
@@ -585,12 +585,13 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
                                           0);
 
        nl = strchr(sb.buf + header_len, '\n');
-       header_line = xstrndup(sb.buf + header_len,
-                              nl - (sb.buf + header_len));
-       strbuf_release(&sb);
-       strbuf_addf(&sb, "%s: %s\n", reflog_msg, header_line);
-       strbuf_addch(&sb, '\0');
-       free(header_line);
+       if (nl)
+               strbuf_setlen(&sb, nl + 1 - sb.buf);
+       else
+               strbuf_addch(&sb, '\n');
+       strbuf_remove(&sb, 0, header_len);
+       strbuf_insert(&sb, 0, reflog_msg, strlen(reflog_msg));
+       strbuf_insert(&sb, strlen(reflog_msg), ": ", 2);
 
        if (!ref_lock)
                die("cannot lock HEAD ref");