diff -urpN busybox-1.12.1/findutils/grep.c busybox-1.12.1-grep/findutils/grep.c --- busybox-1.12.1/findutils/grep.c 2008-09-28 20:04:28.000000000 +0200 +++ busybox-1.12.1-grep/findutils/grep.c 2008-10-10 14:39:09.000000000 +0200 @@ -363,12 +363,22 @@ static int grep_file(FILE *file) * (unless -v: -Fov doesnt print anything at all) */ if (found) print_line(gl->pattern, strlen(gl->pattern), linenum, ':'); - } else { + } else while (1) { + char old = line[gl->matched_range.rm_eo]; line[gl->matched_range.rm_eo] = '\0'; print_line(line + gl->matched_range.rm_so, gl->matched_range.rm_eo - gl->matched_range.rm_so, linenum, ':'); - } + line[gl->matched_range.rm_eo] = old; +#if !ENABLE_EXTRA_COMPAT + break; +#else + if (re_search(&gl->compiled_regex, line, line_len, + gl->matched_range.rm_eo, line_len - gl->matched_range.rm_eo, + &gl->matched_range) < 0) + break; +#endif + } } else { print_line(line, line_len, linenum, ':'); }