From: Guido van Rossum Date: Tue, 21 Jul 1998 14:24:04 +0000 (+0000) Subject: Don't use calculations on values gotten from tell(). Also use a X-Git-Tag: v1.5.2a1~279 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=052969a6022a06414b11ab6fe294d5af01d20a59;p=python Don't use calculations on values gotten from tell(). Also use a slightly different way to test for the existence of unread. --- diff --git a/Lib/rfc822.py b/Lib/rfc822.py index fc244c5b88..2e97ef4daf 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