git-notes: fix printing of multi-line notes
The line length was read from the same position every time, causing mangled output when printing notes with multiple lines. Also, adding new-line manually for each line ensures that we get a new-line between commits, matching git-log for commits without notes. Signed-off-by: Tor Arne Vestbø <tavestbo@trolltech.com> Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
bb1dff9def
commit
22a3d06093
13
notes.c
13
notes.c
@ -110,8 +110,8 @@ void get_commit_notes(const struct commit *commit, struct strbuf *sb,
|
||||
{
|
||||
static const char *utf8 = "utf-8";
|
||||
unsigned char *sha1;
|
||||
char *msg;
|
||||
unsigned long msgoffset, msglen;
|
||||
char *msg, *msg_p;
|
||||
unsigned long linelen, msglen;
|
||||
enum object_type type;
|
||||
|
||||
if (!initialized) {
|
||||
@ -148,12 +148,13 @@ void get_commit_notes(const struct commit *commit, struct strbuf *sb,
|
||||
|
||||
strbuf_addstr(sb, "\nNotes:\n");
|
||||
|
||||
for (msgoffset = 0; msgoffset < msglen;) {
|
||||
int linelen = strchrnul(msg, '\n') - msg;
|
||||
for (msg_p = msg; msg_p < msg + msglen; msg_p += linelen + 1) {
|
||||
linelen = strchrnul(msg_p, '\n') - msg_p;
|
||||
|
||||
strbuf_addstr(sb, " ");
|
||||
strbuf_add(sb, msg + msgoffset, linelen);
|
||||
msgoffset += linelen;
|
||||
strbuf_add(sb, msg_p, linelen);
|
||||
strbuf_addch(sb, '\n');
|
||||
}
|
||||
|
||||
free(msg);
|
||||
}
|
||||
|
Reference in New Issue
Block a user