From: Michael W. Hudson Date: Mon, 28 Jan 2002 15:27:20 +0000 (+0000) Subject: It's merge time! X-Git-Tag: v2.2.1c1~223 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7017724abfc58b994e5299cb1093d84dc9827022;p=thirdparty%2FPython%2Fcpython.git It's merge time! Backport bwarsaw's checkin of revision 1.6: _parsebody(): When adding subparts to a multipart container, make sure that the first subpart added makes the payload a list object. Otherwise, a multipart/* with only one subpart will not have the proper structure. --- diff --git a/Lib/email/Parser.py b/Lib/email/Parser.py index 44a0ca2bdd61..2f131d6b3a92 100644 --- a/Lib/email/Parser.py +++ b/Lib/email/Parser.py @@ -1,10 +1,11 @@ -# Copyright (C) 2001 Python Software Foundation +# Copyright (C) 2001,2002 Python Software Foundation # Author: barry@zope.com (Barry Warsaw) """A parser of RFC 2822 and MIME email messages. """ from cStringIO import StringIO +from types import ListType # Intrapackage imports import Errors @@ -133,7 +134,11 @@ class Parser: msgobj = self.parsestr(part) container.preamble = preamble container.epilogue = epilogue - container.add_payload(msgobj) + # Ensure that the container's payload is a list + if not isinstance(container.get_payload(), ListType): + container.set_payload([msgobj]) + else: + container.add_payload(msgobj) elif container.get_type() == 'message/delivery-status': # This special kind of type contains blocks of headers separated # by a blank line. We'll represent each header block as a