summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2003-06-29 15:44:07 (GMT)
committerRaymond Hettinger <python@rcn.com>2003-06-29 15:44:07 (GMT)
commit2b6220d88bd2a8821f44468ffc3cb59d60a296a4 (patch)
tree8a599fdbf77989e0b362a8296ffbac12e37cf335 /Lib
parentc5131bc256dd26eb7d46ec5774a0a42915fac838 (diff)
downloadcpython-2b6220d88bd2a8821f44468ffc3cb59d60a296a4.zip
cpython-2b6220d88bd2a8821f44468ffc3cb59d60a296a4.tar.gz
cpython-2b6220d88bd2a8821f44468ffc3cb59d60a296a4.tar.bz2
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.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/test_descr.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index 46e3c48..cb13ff2 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"