summaryrefslogtreecommitdiff
path: root/builtin-commit.c
diff options
context:
space:
mode:
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>2007-11-08 12:15:26 (GMT)
committerJunio C Hamano <gitster@pobox.com>2007-11-23 01:05:02 (GMT)
commit741707b1e2261d522a92948ff7d7b897ff00e587 (patch)
tree4261a781e5d4e16f284721b9aff0d570775fc26b /builtin-commit.c
parente97c9ad96b60d51b0b3852aaaff146015d01cb62 (diff)
downloadgit-741707b1e2261d522a92948ff7d7b897ff00e587.zip
git-741707b1e2261d522a92948ff7d7b897ff00e587.tar.gz
git-741707b1e2261d522a92948ff7d7b897ff00e587.tar.bz2
builtin-commit: fix reflog message generation
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>
Diffstat (limited to 'builtin-commit.c')
-rw-r--r--builtin-commit.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/builtin-commit.c b/builtin-commit.c
index 669cc6b..c8f79a8 100644
--- a/builtin-commit.c
+++ b/builtin-commit.c
@@ -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");