From: Benjamin Peterson Date: Sun, 6 Mar 2011 23:08:40 +0000 (-0600) Subject: only do this sys.stderr replacing on CPython X-Git-Tag: v2.7.2rc1~272 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bf12cdc24a5d75c6938696fb55fd2ed4bf1ca08b;p=thirdparty%2FPython%2Fcpython.git only do this sys.stderr replacing on CPython --- diff --git a/Lib/lib2to3/pytree.py b/Lib/lib2to3/pytree.py index b24283e0eead..c2fa80014a02 100644 --- a/Lib/lib2to3/pytree.py +++ b/Lib/lib2to3/pytree.py @@ -743,9 +743,11 @@ class WildcardPattern(BasePattern): else: # The reason for this is that hitting the recursion limit usually # results in some ugly messages about how RuntimeErrors are being - # ignored. - save_stderr = sys.stderr - sys.stderr = StringIO() + # ignored. We don't do this on non-CPython implementation because + # they don't have this problem. + if hasattr(sys, "getrefcount"): + save_stderr = sys.stderr + sys.stderr = StringIO() try: for count, r in self._recursive_matches(nodes, 0): if self.name: @@ -759,7 +761,8 @@ class WildcardPattern(BasePattern): r[self.name] = nodes[:count] yield count, r finally: - sys.stderr = save_stderr + if hasattr(sys, "getrefcount"): + sys.stderr = save_stderr def _iterative_matches(self, nodes): """Helper to iteratively yield the matches."""