Add test for SF bug [ #492403 ] exec() segfaults on closure's func_code

This commit is contained in:
Jeremy Hylton 2001-12-13 19:45:04 +00:00
parent 6272dfd99f
commit ccae8377a3
1 changed files with 10 additions and 2 deletions

View File

@ -461,7 +461,8 @@ def adaptgetter(name, klass, getter):
kind, des = getter kind, des = getter
if kind == 1: # AV happens when stepping from this line to next if kind == 1: # AV happens when stepping from this line to next
if des == "": if des == "":
des = "_%s__%s" % (klass.__name__, name) ## des = "_%s__%s" % (klass.__name__, name)
des = "1"
return lambda obj: getattr(obj, des) return lambda obj: getattr(obj, des)
class TestClass: class TestClass:
@ -471,7 +472,7 @@ sys.settrace(tracer)
adaptgetter("foo", TestClass, (1, "")) adaptgetter("foo", TestClass, (1, ""))
sys.settrace(None) sys.settrace(None)
print "20. eval with free variables" print "20. eval and exec with free variables"
def f(x): def f(x):
return lambda: x + 1 return lambda: x + 1
@ -484,6 +485,13 @@ except TypeError:
else: else:
print "eval() should have failed, because code contained free vars" print "eval() should have failed, because code contained free vars"
try:
exec g.func_code
except TypeError:
pass
else:
print "exec should have failed, because code contained free vars"
warnings.resetwarnings() warnings.resetwarnings()
print "21. list comprehension with local variables" print "21. list comprehension with local variables"