summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorR David Murray <rdmurray@bitdance.com>2016-07-16 01:29:13 (GMT)
committerR David Murray <rdmurray@bitdance.com>2016-07-16 01:29:13 (GMT)
commit702b0460d20fa699c1c703e00bcc93243e3020a1 (patch)
treea7aa7c18edb7de68d63db0c59a5ff56b74634593 /Lib
parent9305bba203747d7176baa1a216ac59d8705eadab (diff)
downloadcpython-702b0460d20fa699c1c703e00bcc93243e3020a1.zip
cpython-702b0460d20fa699c1c703e00bcc93243e3020a1.tar.gz
cpython-702b0460d20fa699c1c703e00bcc93243e3020a1.tar.bz2
#27522: break unintended cycle in feedparser.
Patch by Costas.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/email/feedparser.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/Lib/email/feedparser.py b/Lib/email/feedparser.py
index e2e3e96..c542018 100644
--- a/Lib/email/feedparser.py
+++ b/Lib/email/feedparser.py
@@ -145,7 +145,7 @@ class FeedParser:
"""
self.policy = policy
- self._factory_kwds = lambda: {'policy': self.policy}
+ self._old_style_factory = False
if _factory is None:
# What this should be:
#self._factory = policy.default_message_factory
@@ -160,7 +160,7 @@ class FeedParser:
_factory(policy=self.policy)
except TypeError:
# Assume this is an old-style factory
- self._factory_kwds = lambda: {}
+ self._old_style_factory = True
self._input = BufferedSubFile()
self._msgstack = []
self._parse = self._parsegen().__next__
@@ -197,7 +197,10 @@ class FeedParser:
return root
def _new_message(self):
- msg = self._factory(**self._factory_kwds())
+ if self._old_style_factory:
+ msg = self._factory()
+ else:
+ msg = self._factory(policy=self.policy)
if self._cur and self._cur.get_content_type() == 'multipart/digest':
msg.set_default_type('message/rfc822')
if self._msgstack: