diff --git a/src/commit.c b/src/commit.c index f0e304a84..e437cffe6 100644 --- a/src/commit.c +++ b/src/commit.c @@ -311,7 +311,10 @@ const char *git_commit_summary(git_commit *commit) git_buf_putc(&summary, *msg); } - commit->summary = git_buf_detach(&summary); + if (summary.asize == 0) + commit->summary = git__strdup(""); + else + commit->summary = git_buf_detach(&summary); } return commit->summary; diff --git a/tests/commit/commit.c b/tests/commit/commit.c index 4af9190b5..38397d2df 100644 --- a/tests/commit/commit.c +++ b/tests/commit/commit.c @@ -72,4 +72,8 @@ void test_commit_commit__summary(void) assert_commit_summary("Trailing spaces are removed", "Trailing spaces are removed "); assert_commit_summary("Trailing tabs", "Trailing tabs\t\n\nare removed"); assert_commit_summary("Trailing spaces", "Trailing spaces \n\nare removed"); + assert_commit_summary("", ""); + assert_commit_summary("", " "); + assert_commit_summary("", "\n"); + assert_commit_summary("", "\n \n"); }