The command, `yes ''|./cat -n' would stop printing after INT_MAX lines.
authorJim Meyering <jim@meyering.net>
Sat, 21 Oct 2000 19:57:41 +0000 (19:57 +0000)
committerJim Meyering <jim@meyering.net>
Sat, 21 Oct 2000 19:57:41 +0000 (19:57 +0000)
(cat): Never let `newlines' exceed 3.

src/cat.c

index 84634c2..9587f78 100644 (file)
--- a/src/cat.c
+++ b/src/cat.c
@@ -350,13 +350,21 @@ cat (
 
              if (++newlines > 0)
                {
-                 /* Are multiple adjacent empty lines to be substituted by
-                    single ditto (-s), and this was the second empty line?  */
-
-                 if (squeeze_empty_lines && newlines >= 2)
+                 if (newlines >= 2)
                    {
-                     ch = *bpin++;
-                     continue;
+                     /* Limit this to 2 here.  Otherwise, with lots of
+                        consecutive newlines, the counter could wrap
+                        around at INT_MAX.  */
+                     newlines = 2;
+
+                     /* Are multiple adjacent empty lines to be substituted
+                        by single ditto (-s), and this was the second empty
+                        line?  */
+                     if (squeeze_empty_lines)
+                       {
+                         ch = *bpin++;
+                         continue;
+                       }
                    }
 
                  /* Are line numbers to be written at empty lines (-n)?  */