From: Raymond Hettinger Date: Sun, 29 Jun 2003 15:44:07 +0000 (+0000) Subject: SF bug #762455: Python segfaults when sys.stdout is changed in getattr X-Git-Tag: v2.3c1~254 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2b6220d88bd2a8821f44468ffc3cb59d60a296a4;p=thirdparty%2FPython%2Fcpython.git SF bug #762455: Python segfaults when sys.stdout is changed in getattr * Added unittest that fails before, but not after Neil's fix to ceval.c. --- diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index 46e3c4837a43..cb13ff2e065a 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -3916,6 +3916,20 @@ def weakref_segfault(): o.whatever = Provoker(o) del o +# Fix SF #762455, segfault when sys.stdout is changed in getattr +def filefault(): + if verbose: + print "Testing sys.stdout is changed in getattr..." + import sys + class StdoutGuard: + def __getattr__(self, attr): + sys.stdout = sys.__stdout__ + raise RuntimeError("Premature access to sys.stdout.%s" % attr) + sys.stdout = StdoutGuard() + try: + print "Oops!" + except RuntimeError: + pass def test_main(): weakref_segfault() # Must be first, somehow @@ -4007,6 +4021,7 @@ def test_main(): isinst_isclass() proxysuper() carloverre() + filefault() if verbose: print "All OK"