diff options
author | Guido van Rossum <guido@python.org> | 1998-07-21 14:24:04 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1998-07-21 14:24:04 (GMT) |
commit | 052969a6022a06414b11ab6fe294d5af01d20a59 (patch) | |
tree | 625b4a78ff6e8861507b2e9cbfa74834b36a2ad6 | |
parent | 897b9f0b0d6ffdb56ee3587666fe67d530d2ac39 (diff) | |
download | cpython-052969a6022a06414b11ab6fe294d5af01d20a59.zip cpython-052969a6022a06414b11ab6fe294d5af01d20a59.tar.gz cpython-052969a6022a06414b11ab6fe294d5af01d20a59.tar.bz2 |
Don't use calculations on values gotten from tell(). Also use a
slightly different way to test for the existence of unread.
-rw-r--r-- | Lib/rfc822.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/Lib/rfc822.py b/Lib/rfc822.py index fc244c5..2e97ef4 100644 --- a/Lib/rfc822.py +++ b/Lib/rfc822.py @@ -125,7 +125,14 @@ class Message: self.status = '' headerseen = "" firstline = 1 + startofline = unread = tell = None + if hasattr(self.fp, 'unread'): + unread = self.fp.unread + elif self.seekable: + tell = self.fp.tell while 1: + if tell: + startofline = tell() line = self.fp.readline() if not line: self.status = 'EOF in headers' @@ -160,10 +167,10 @@ class Message: else: self.status = 'Non-header line where header expected' # Try to undo the read. - if hasattr(self.fp, 'unread'): - self.fp.unread(line) - elif self.seekable: - self.fp.seek(-len(line), 1) + if unread: + unread(line) + elif tell: + self.fp.seek(startofline) else: self.status = self.status + '; bad seek' break |