~malept/ubuntu/lucid/python2.6/dev-dependency-fix

« back to all changes in this revision

Viewing changes to Lib/test/crashers/borrowed_ref_2.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-02-13 12:51:00 UTC
  • Revision ID: james.westby@ubuntu.com-20090213125100-uufgcb9yeqzujpqw
Tags: upstream-2.6.1
ImportĀ upstreamĀ versionĀ 2.6.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
"""
 
2
_PyType_Lookup() returns a borrowed reference.
 
3
This attacks PyObject_GenericSetAttr().
 
4
 
 
5
NB. on my machine this crashes in 2.5 debug but not release.
 
6
"""
 
7
 
 
8
class A(object):
 
9
    pass
 
10
 
 
11
class B(object):
 
12
    def __del__(self):
 
13
        print "hi"
 
14
        del C.d
 
15
 
 
16
class D(object):
 
17
    def __set__(self, obj, value):
 
18
        self.hello = 42
 
19
 
 
20
class C(object):
 
21
    d = D()
 
22
 
 
23
    def g():
 
24
        pass
 
25
 
 
26
 
 
27
c = C()
 
28
a = A()
 
29
a.cycle = a
 
30
a.other = B()
 
31
 
 
32
lst = [None] * 1000000
 
33
i = 0
 
34
del a
 
35
while 1:
 
36
    c.d = 42         # segfaults in PyMethod_New(im_func=D.__set__, im_self=d)
 
37
    lst[i] = c.g     # consume the free list of instancemethod objects
 
38
    i += 1