[pypy-commit] pypy use-file-star-for-file: simplify

bdkearns noreply at buildbot.pypy.org
Thu Sep 11 11:15:14 CEST 2014


Author: Brian Kearns <bdkearns at gmail.com>
Branch: use-file-star-for-file
Changeset: r73455:216182f96c93
Date: 2014-09-11 05:14 -0400
http://bitbucket.org/pypy/pypy/changeset/216182f96c93/

Log:	simplify

diff --git a/rpython/rlib/rfile.py b/rpython/rlib/rfile.py
--- a/rpython/rlib/rfile.py
+++ b/rpython/rlib/rfile.py
@@ -369,19 +369,11 @@
         self._check_readable()
         ll_file = self._ll_file
 
-        bytesrequested = size
-        if bytesrequested < 0:
-            buffersize = self._new_buffersize(0)
-        else:
-            buffersize = bytesrequested
-        bytesread = 0
-
         s = StringBuilder()
+        buffersize = size if size >= 0 else self._new_buffersize(0)
         buf = lltype.malloc(rffi.CCHARP.TO, buffersize, flavor='raw')
         try:
             while True:
-                if bytesrequested >= 0:
-                    buffersize = bytesrequested - bytesread
                 assert buffersize >= 0
                 chunksize = intmask(self._fread(buf, buffersize, ll_file))
                 interrupted = (c_ferror(ll_file) and
@@ -395,20 +387,18 @@
                     if not c_ferror(ll_file):
                         break
                     c_clearerr(ll_file)
-                    if bytesread > 0 and rposix.get_errno() == errno.EAGAIN:
+                    if s.getlength() > 0 and rposix.get_errno() == errno.EAGAIN:
                         break
                     raise _from_errno(IOError)
                 s.append_charpsize(buf, chunksize)
-                bytesread += chunksize
                 if chunksize < buffersize and not interrupted:
                     c_clearerr(ll_file)
                     break
-                if bytesrequested >= 0:
+                if size >= 0:
                     break
-                else:
-                    buffersize = self._new_buffersize(buffersize)
-                    lltype.free(buf, flavor='raw')
-                    buf = lltype.malloc(rffi.CCHARP.TO, buffersize, flavor='raw')
+                buffersize = self._new_buffersize(buffersize)
+                lltype.free(buf, flavor='raw')
+                buf = lltype.malloc(rffi.CCHARP.TO, buffersize, flavor='raw')
         finally:
             lltype.free(buf, flavor='raw')
         return s.build()


More information about the pypy-commit mailing list