changeset: 102367:e1278508f3cb parent: 102365:6ba86ca875a8 parent: 102366:6c7fd035bce3 user: R David Murray date: Fri Jul 15 21:30:13 2016 -0400 files: Misc/NEWS description: Merge: #27522: break unintended cycle in feedparser. diff -r 6ba86ca875a8 -r e1278508f3cb Lib/email/feedparser.py --- a/Lib/email/feedparser.py Fri Jul 15 12:16:42 2016 -0700 +++ b/Lib/email/feedparser.py Fri Jul 15 21:30:13 2016 -0400 @@ -145,7 +145,7 @@ """ 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 @@ _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 @@ 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: diff -r 6ba86ca875a8 -r e1278508f3cb Misc/NEWS --- a/Misc/NEWS Fri Jul 15 12:16:42 2016 -0700 +++ b/Misc/NEWS Fri Jul 15 21:30:13 2016 -0400 @@ -18,6 +18,8 @@ Library ------- +- Issue #27522: Avoid an unintentional reference cycle in email.feedparser. + - Issue 27512: Fix a segfault when os.fspath() called a an __fspath__() method that raised an exception. Patch by Xiang Zhang.