--- 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