refill.c.patch   [plain text]


--- refill.c.orig	2008-01-24 17:13:42.000000000 -0800
+++ refill.c	2008-02-17 13:19:27.000000000 -0800
@@ -68,8 +68,8 @@ lflush(FILE *fp)
  * Refill a stdio buffer.
  * Return EOF on eof or error, 0 otherwise.
  */
-int
-__srefill(FILE *fp)
+__private_extern__ int
+__srefill0(FILE *fp)
 {
 
 	/* make sure stdio is set up */
@@ -134,6 +134,13 @@ __srefill(FILE *fp)
 		if ((fp->_flags & (__SLBF|__SWR)) == (__SLBF|__SWR))
 			__sflush(fp);
 	}
+	return (1);
+}
+
+__private_extern__ int
+__srefill1(FILE *fp)
+{
+
 	fp->_p = fp->_bf._base;
 	fp->_r = _sread(fp, (char *)fp->_p, fp->_bf._size);
 	fp->_flags &= ~__SMOD;	/* buffer contents are again pristine */
@@ -148,3 +155,13 @@ __srefill(FILE *fp)
 	}
 	return (0);
 }
+
+int
+__srefill(FILE *fp)
+{
+	int ret;
+
+	if ((ret = __srefill0(fp)) <= 0)
+		return ret;
+	return __srefill1(fp);
+}