--- grep-2.5.1a/src/grep.c.empty-pattern 2006-11-22 19:05:43.000000000 +0000 +++ grep-2.5.1a/src/grep.c 2006-11-22 19:22:04.000000000 +0000 @@ -1667,9 +1667,6 @@ out_invert ^= 1; match_lines = match_words = 0; } - else - /* Strip trailing newline. */ - --keycc; } else if (optind < argc) --- grep-2.5.1a/src/search.c.empty-pattern 2006-11-22 19:21:11.000000000 +0000 +++ grep-2.5.1a/src/search.c 2006-11-22 19:35:06.000000000 +0000 @@ -204,6 +204,10 @@ motif = sep; } while (sep && total != 0); + /* Strip trailing newline. */ + if (size && pattern[size - 1] == '\n') + size--; + /* In the match_words and match_lines cases, we use a different pattern for the DFA matcher that will quickly throw out cases that won't work. Then if DFA succeeds we do some hairy stuff using the regex matcher @@ -288,6 +292,10 @@ motif = sep; } while (sep && total != 0); + /* Strip trailing newline. */ + if (size && pattern[size - 1] == '\n') + size--; + /* In the match_words and match_lines cases, we use a different pattern for the DFA matcher that will quickly throw out cases that won't work. Then if DFA succeeds we do some hairy stuff using the regex matcher