mirror of
https://github.com/python/cpython.git
synced 2025-08-01 15:43:13 +00:00
Fix test67.py from issue #1303614.
This commit is contained in:
parent
4e3f12486f
commit
37edeab778
3 changed files with 29 additions and 21 deletions
|
@ -4504,6 +4504,29 @@ def test_borrowed_ref_4_segfault():
|
|||
finally:
|
||||
__builtin__.__import__ = orig_import
|
||||
|
||||
def test_losing_dict_ref_segfault():
|
||||
# This used to segfault;
|
||||
# derived from issue #1303614, test67.py
|
||||
if verbose:
|
||||
print "Testing losing dict ref segfault..."
|
||||
|
||||
class Strange(object):
|
||||
def __hash__(self):
|
||||
return hash('hello')
|
||||
|
||||
def __eq__(self, other):
|
||||
x.__dict__ = {} # the old x.__dict__ is deallocated
|
||||
return False
|
||||
|
||||
class X(object):
|
||||
pass
|
||||
|
||||
v = 123
|
||||
x = X()
|
||||
x.__dict__ = {Strange(): 42, 'hello': v+456}
|
||||
x.hello
|
||||
|
||||
|
||||
def test_main():
|
||||
weakref_segfault() # Must be first, somehow
|
||||
wrapper_segfault()
|
||||
|
@ -4606,6 +4629,7 @@ def test_main():
|
|||
test_weakref_in_del_segfault()
|
||||
test_borrowed_ref_3_segfault()
|
||||
test_borrowed_ref_4_segfault()
|
||||
test_losing_dict_ref_segfault()
|
||||
|
||||
if verbose: print "All OK"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue