]> git.saurik.com Git - apple/libc.git/blobdiff - stdio/FreeBSD/makebuf.c.patch
Libc-763.13.tar.gz
[apple/libc.git] / stdio / FreeBSD / makebuf.c.patch
index 49aeb434655d888c908ccf3e0cf5959c55423eda..970a38d66b147cdd0b8e896f8b0ee999d603655f 100644 (file)
@@ -1,15 +1,16 @@
---- makebuf.c.orig     2006-10-11 20:54:06.000000000 -0700
-+++ makebuf.c  2006-10-12 10:09:09.000000000 -0700
-@@ -49,6 +49,8 @@
+--- makebuf.c.bsdnew   2009-11-11 13:33:12.000000000 -0800
++++ makebuf.c  2009-11-11 13:33:13.000000000 -0800
+@@ -47,6 +47,9 @@ __FBSDID("$FreeBSD: src/lib/libc/stdio/m
+ #include "libc_private.h"
  #include "local.h"
- #include "un-namespace.h"
  
++#define MAXBUFSIZE    (1 << 16)
 +#define TTYBUFSIZE    4096
 +
  /*
   * Allocate a file buffer, or switch to unbuffered I/O.
   * Per the ANSI C standard, ALL tty devices default to line buffered.
-@@ -71,6 +73,12 @@
+@@ -69,6 +72,12 @@ __smakebuf(fp)
                return;
        }
        flags = __swhatbuf(fp, &size, &couldbetty);
@@ -22,7 +23,7 @@
        if ((p = malloc(size)) == NULL) {
                fp->_flags |= __SNBF;
                fp->_bf._base = fp->_p = fp->_nbuf;
-@@ -81,8 +89,6 @@
+@@ -79,8 +88,6 @@ __smakebuf(fp)
        flags |= __SMBF;
        fp->_bf._base = fp->_p = p;
        fp->_bf._size = size;
        fp->_flags |= flags;
  }
  
+@@ -113,8 +120,7 @@ __swhatbuf(fp, bufsize, couldbetty)
+        * __sseek is mainly paranoia.)  It is safe to set _blksize
+        * unconditionally; it will only be used if __SOPT is also set.
+        */
+-      *bufsize = st.st_blksize;
+-      fp->_blksize = st.st_blksize;
++      fp->_blksize = *bufsize = st.st_blksize > MAXBUFSIZE ? MAXBUFSIZE : st.st_blksize;
+       return ((st.st_mode & S_IFMT) == S_IFREG && fp->_seek == __sseek ?
+           __SOPT : __SNPT);
+ }