]> granicus.if.org Git - python/commitdiff
Modify the segfaulting example to show why r53997 is not a solution to
authorArmin Rigo <arigo@tunes.org>
Wed, 28 Feb 2007 09:25:29 +0000 (09:25 +0000)
committerArmin Rigo <arigo@tunes.org>
Wed, 28 Feb 2007 09:25:29 +0000 (09:25 +0000)
it.

Lib/test/crashers/modify_dict_attr.py [new file with mode: 0644]

diff --git a/Lib/test/crashers/modify_dict_attr.py b/Lib/test/crashers/modify_dict_attr.py
new file mode 100644 (file)
index 0000000..11c6721
--- /dev/null
@@ -0,0 +1,20 @@
+
+# http://python.org/sf/1303614
+
+class Y(object):
+    pass
+
+class type_with_modifiable_dict(type, Y):
+    pass
+
+class MyClass(object):
+    """This class has its __dict__ attribute indirectly
+    exposed via the __dict__ getter/setter of Y.
+    """
+    __metaclass__ = type_with_modifiable_dict
+
+
+if __name__ == '__main__':
+    dictattr = Y.__dict__['__dict__']
+    dictattr.__delete__(MyClass)  # if we set tp_dict to NULL,
+    print MyClass         # doing anything with MyClass segfaults