Add test for SF bug [ #492403 ] exec() segfaults on closure's func_code
This commit is contained in:
parent
6272dfd99f
commit
ccae8377a3
|
@ -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"
|
||||||
|
|
Loading…
Reference in New Issue