grep: fix a case when -o loops forever

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/findutils/grep.c b/findutils/grep.c
index 776a629..9dc2f19 100644
--- a/findutils/grep.c
+++ b/findutils/grep.c
@@ -229,8 +229,8 @@
 	char *line = NULL;
 	ssize_t line_len;
 	size_t line_alloc_len;
-#define rm_so start[0]
-#define rm_eo end[0]
+# define rm_so start[0]
+# define rm_eo end[0]
 #endif
 #if ENABLE_FEATURE_GREP_CONTEXT
 	int print_n_lines_after = 0;
@@ -238,7 +238,7 @@
 	int idx = 0; /* used for iteration through the circular buffer */
 #else
 	enum { print_n_lines_after = 0 };
-#endif /* ENABLE_FEATURE_GREP_CONTEXT */
+#endif
 
 	while (
 #if !ENABLE_EXTRA_COMPAT
@@ -377,6 +377,8 @@
 						print_line(line + gl->matched_range.rm_so,
 								end - gl->matched_range.rm_so,
 								linenum, ':');
+						if (old == '\0')
+							break;
 						line[end] = old;
 #if !ENABLE_EXTRA_COMPAT
 						if (regexec(&gl->compiled_regex, line + end,