From 6dc0ace10943b9f8e004b63277dc1186594f0450 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 4 Dec 2009 02:48:14 +0100 Subject: grep: fix a case when -o loops forever Signed-off-by: Denys Vlasenko --- findutils/grep.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'findutils') diff --git a/findutils/grep.c b/findutils/grep.c index 776a629be..9dc2f1942 100644 --- a/findutils/grep.c +++ b/findutils/grep.c @@ -229,8 +229,8 @@ static int grep_file(FILE *file) 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 @@ static int grep_file(FILE *file) 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 @@ static int grep_file(FILE *file) 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, -- cgit v1.2.3