diff --git a/builtin-grep.c b/builtin-grep.c
index 2124fa62e89..e87b5cb48d6 100644
--- a/builtin-grep.c
+++ b/builtin-grep.c
@@ -264,6 +264,8 @@ static int grep_buffer(struct grep_opt *opt, const char *name,
 		}
 		*eol = ch;
 		bol = eol + 1;
+		if (!left)
+			break;
 		left--;
 		lno++;
 	}