refill.c.patch   [plain text]


--- refill.c.bsdnew	2009-11-11 13:33:14.000000000 -0800
+++ refill.c	2009-11-11 13:33:14.000000000 -0800
@@ -64,8 +64,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 */
@@ -130,6 +130,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 */
@@ -144,3 +151,13 @@ __srefill(FILE *fp)
 	}
 	return (0);
 }
+
+int
+__srefill(FILE *fp)
+{
+	int ret;
+
+	if ((ret = __srefill0(fp)) <= 0)
+		return ret;
+	return __srefill1(fp);
+}