[Python-checkins] python/dist/src/Lib/email FeedParser.py, 1.10, 1.11

bwarsaw at users.sourceforge.net bwarsaw at users.sourceforge.net
Sun Oct 10 01:00:14 CEST 2004


Update of /cvsroot/python/python/dist/src/Lib/email
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20785

Modified Files:
	FeedParser.py 
Log Message:
Fix SF bug # 1030941.  In _parsegen(), in the clause where we're
capturing_preamble but we found a StartBoundaryNotFoundDefect, we need to
consume all lines from the current position to the EOF, which we'll set as the
epilogue of the current message.  If we're not at EOF when we return from
here, the outer message's capturing_preamble assertion will fail.


Index: FeedParser.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/email/FeedParser.py,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- FeedParser.py	3 Oct 2004 03:16:18 -0000	1.10
+++ FeedParser.py	9 Oct 2004 23:00:11 -0000	1.11
@@ -309,8 +309,6 @@
                             if eolmo:
                                 preamble[-1] = lastline[:-len(eolmo.group(0))]
                             self._cur.preamble = EMPTYSTRING.join(preamble)
-                        #import pdb ; pdb.set_trace()
-                        # See SF bug #1030941
                         capturing_preamble = False
                         self._input.unreadline(line)
                         continue
@@ -367,10 +365,16 @@
             # We've seen either the EOF or the end boundary.  If we're still
             # capturing the preamble, we never saw the start boundary.  Note
             # that as a defect and store the captured text as the payload.
-            # Otherwise everything from here to the EOF is epilogue.
+            # Everything from here to the EOF is epilogue.
             if capturing_preamble:
                 self._cur.defects.append(Errors.StartBoundaryNotFoundDefect())
                 self._cur.set_payload(EMPTYSTRING.join(preamble))
+                epilogue = []
+                for line in self._input:
+                    if line is NeedMoreData:
+                        yield NeedMoreData
+                        continue
+                self._cur.epilogue = EMPTYSTRING.join(epilogue)
                 return
             # If the end boundary ended in a newline, we'll need to make sure
             # the epilogue isn't None



More information about the Python-checkins mailing list