]> granicus.if.org Git - python/commitdiff
[Bug #925107] Make .readline() consider self.stop. This makes read() and readline...
authorAndrew M. Kuchling <amk@amk.ca>
Wed, 7 Jul 2004 14:09:21 +0000 (14:09 +0000)
committerAndrew M. Kuchling <amk@amk.ca>
Wed, 7 Jul 2004 14:09:21 +0000 (14:09 +0000)
2.3 bugfix candidate.

Lib/mailbox.py

index 258b657445f888163beba3066c19ed4f05bce84a..dbb2724b22a7d6483196840e101c2986dd9f4e5f 100755 (executable)
@@ -43,28 +43,23 @@ class _Subfile:
         self.stop = stop
         self.pos = self.start
 
-    def read(self, length = None):
+
+    def _read(self, length, read_function):
         if self.pos >= self.stop:
             return ''
         remaining = self.stop - self.pos
-        if length is None or length < 0:
-            length = remaining
-        elif length > remaining:
+        if length is None or length < 0 or length > remaining:
             length = remaining
         self.fp.seek(self.pos)
-        data = self.fp.read(length)
+        data = read_function(length)
         self.pos = self.fp.tell()
         return data
 
+    def read(self, length = None):
+        self._read(length, self.fp.read)
+
     def readline(self, length = None):
-        if self.pos >= self.stop:
-            return ''
-        if length is None:
-            length = self.stop - self.pos
-        self.fp.seek(self.pos)
-        data = self.fp.readline(length)
-        self.pos = self.fp.tell()
-        return data
+        self._read(length, self.fp.readline)
 
     def readlines(self, sizehint = -1):
         lines = []