diff options
author | Patrick Steinhardt <ps@pks.im> | 2016-10-07 09:31:41 +0200 |
---|---|---|
committer | Patrick Steinhardt <ps@pks.im> | 2016-10-09 13:26:21 +0200 |
commit | a719ef5e6d4a1a8ec53469c7914032ed67922772 (patch) | |
tree | 3a3edc392cca25a27532b7cb243212339de93342 | |
parent | 4974e3a59648095ffa6fce6c5b651a820c0c34b9 (diff) | |
download | libgit2-a719ef5e6d4a1a8ec53469c7914032ed67922772.tar.gz |
commit: always initialize commit message
When parsing a commit, we will treat all bytes left after parsing
the headers as the commit message. When no bytes are left, we
leave the commit's message uninitialized. While uncommon to have
a commit without message, this is the right behavior as Git
unfortunately allows for empty commit messages.
Given that this scenario is so uncommon, most programs acting on
the commit message will never check if the message is actually
set, which may lead to errors. To work around the error and not
lay the burden of checking for empty commit messages to the
developer, initialize the commit message with an empty string
when no commit message is given.
-rw-r--r-- | src/commit.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/commit.c b/src/commit.c index 99a80855c..76e6dcbc9 100644 --- a/src/commit.c +++ b/src/commit.c @@ -459,10 +459,11 @@ int git_commit__parse(void *_commit, git_odb_object *odb_obj) buffer = buffer_start + header_len + 1; /* extract commit message */ - if (buffer <= buffer_end) { + if (buffer <= buffer_end) commit->raw_message = git__strndup(buffer, buffer_end - buffer); - GITERR_CHECK_ALLOC(commit->raw_message); - } + else + commit->raw_message = git__strdup(""); + GITERR_CHECK_ALLOC(commit->raw_message); return 0; |