From 53d8afafbbf455d24b0a94e4114709a4d495d460 Mon Sep 17 00:00:00 2001 From: Johannes Sixt Date: Mon, 1 Apr 2013 23:36:36 +0200 Subject: rerere forget: grok files containing NUL Using 'git rerere forget .' after a merge that involved binary files runs into an infinite loop if the binary file contains a zero byte. Replace a strchrnul by memchr because the former does not make progress as soon as the NUL is encountered. Signed-off-by: Johannes Sixt Signed-off-by: Junio C Hamano --- rerere.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'rerere.c') diff --git a/rerere.c b/rerere.c index a6a5cd57be..4d940cd375 100644 --- a/rerere.c +++ b/rerere.c @@ -284,8 +284,10 @@ static int rerere_mem_getline(struct strbuf *sb, struct rerere_io *io_) strbuf_release(sb); if (!io->input.len) return -1; - ep = strchrnul(io->input.buf, '\n'); - if (*ep == '\n') + ep = memchr(io->input.buf, '\n', io->input.len); + if (!ep) + ep = io->input.buf + io->input.len; + else if (*ep == '\n') ep++; len = ep - io->input.buf; strbuf_add(sb, io->input.buf, len); -- cgit 1.2.3-korg