Jeff King <peff@xxxxxxxx> writes: > But the actual problem is that MERGE_RR lacks a trailing newline. I > don't see any code to add newlines, even though it seems possible that > we will write out several paths. So I think we need a newline here: > > diff --git a/builtin-rerere.c b/builtin-rerere.c > index c607aad..e4a1dc1 100644 > --- a/builtin-rerere.c > +++ b/builtin-rerere.c > @@ -58,7 +58,8 @@ static int write_rr(struct path_list *rr, int out_fd) > int length = strlen(path) + 1; > if (write_in_full(out_fd, rr->items[i].util, 40) != 40 || > write_in_full(out_fd, "\t", 1) != 1 || > - write_in_full(out_fd, path, length) != length) > + write_in_full(out_fd, path, length) != length || > + write_in_full(out_fd, "\n", 1) != 1) > die("unable to write rerere record"); > } > if (commit_lock_file(&write_lock) != 0) No, check 3f43d72392b6c0477debd7edbd49bae9b7f41e60^:git-rerere.perl; the records in this file are supposed to be NUL terminated (the paths are allowed to have LF in them). > And unless I am missing something, rerere on multiple paths is very > broken (but that seems weird, since this code is so old). I do not recall offhand an example of multi-path rerere working or not working correctly, but I am not surprised if the C re-implementation is broken. Will need to check. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html