OSDN Git Service

(safe_read): If MAX_READ_LEN is defined, limit incremental read
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 18 May 1997 17:49:41 +0000 (17:49 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 18 May 1997 17:49:41 +0000 (17:49 +0000)
attempts to that amount.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@14093 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cpplib.c

index 10dc2fc..50ef8ca 100644 (file)
@@ -7197,7 +7197,8 @@ file_size_and_mode (fd, mode_pointer, size_pointer)
 }
 
 /* Read LEN bytes at PTR from descriptor DESC, for file FILENAME,
-   retrying if necessary.  Return a negative value if an error occurs,
+   retrying if necessary.  If MAX_READ_LEN is defined, read at most
+   that bytes at a time.  Return a negative value if an error occurs,
    otherwise return the actual number of bytes read,
    which must be LEN unless end-of-file was reached.  */
 
@@ -7207,9 +7208,16 @@ safe_read (desc, ptr, len)
      char *ptr;
      int len;
 {
-  int left = len;
+  int left, rcount, nchars;
+
+  left = len;
   while (left > 0) {
-    int nchars = read (desc, ptr, left);
+    rcount = left;
+#ifdef MAX_READ_LEN
+    if (rcount > MAX_READ_LEN)
+      rcount = MAX_READ_LEN;
+#endif
+    nchars = read (desc, ptr, rcount);
     if (nchars < 0)
       {
 #ifdef EINTR