From 2b6220d88bd2a8821f44468ffc3cb59d60a296a4 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sun, 29 Jun 2003 15:44:07 +0000 Subject: [PATCH] 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. --- Lib/test/test_descr.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index 46e3c4837a4..cb13ff2e065 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"