-rw-r--r-- | parsing.c | 19 |
1 files changed, 13 insertions, 6 deletions
@@ -140,16 +140,22 @@ char *substr(const char *head, const char *tail) struct commitinfo *cgit_parse_commit(struct commit *commit) { struct commitinfo *ret; char *p = commit->buffer, *t = commit->buffer; ret = xmalloc(sizeof(*ret)); ret->commit = commit; + ret->author = NULL; + ret->author_email = NULL; + ret->committer = NULL; + ret->committer_email = NULL; + ret->subject = NULL; + ret->msg = NULL; if (strncmp(p, "tree ", 5)) die("Bad commit: %s", sha1_to_hex(commit->object.sha1)); else p += 46; // "tree " + hex[40] + "\n" while (!strncmp(p, "parent ", 7)) p += 48; // "parent " + hex[40] + "\n" @@ -175,17 +181,18 @@ struct commitinfo *cgit_parse_commit(struct commit *commit) ret->committer_date = atol(++t); p = strchr(t, '\n') + 1; } while (*p == '\n') p = strchr(p, '\n') + 1; t = strchr(p, '\n'); - ret->subject = substr(p, t); - p = t + 1; - - while (*p == '\n') - p = strchr(p, '\n') + 1; - ret->msg = p; + if (t && *t) { + ret->subject = substr(p, t); + p = t + 1; + while (*p == '\n') + p = strchr(p, '\n') + 1; + ret->msg = p; + } return ret; } |