[Checkins] SVN: ExtensionClass/trunk/ LP #587760: Handle tp_basicsize correctly.
Hanno Schlichting
hannosch at hannosch.eu
Wed Jun 16 10:17:54 EDT 2010
Log message for revision 113545:
LP #587760: Handle tp_basicsize correctly.
Changed:
U ExtensionClass/trunk/CHANGES.txt
U ExtensionClass/trunk/src/ExtensionClass/_ExtensionClass.c
-=-
Modified: ExtensionClass/trunk/CHANGES.txt
===================================================================
--- ExtensionClass/trunk/CHANGES.txt 2010-06-16 14:15:11 UTC (rev 113544)
+++ ExtensionClass/trunk/CHANGES.txt 2010-06-16 14:17:54 UTC (rev 113545)
@@ -4,6 +4,7 @@
2.13.2 (unreleased)
-------------------
+- LP #587760: Handle tp_basicsize correctly.
2.13.1 (2010-04-03)
-------------------
Modified: ExtensionClass/trunk/src/ExtensionClass/_ExtensionClass.c
===================================================================
--- ExtensionClass/trunk/src/ExtensionClass/_ExtensionClass.c 2010-06-16 14:15:11 UTC (rev 113544)
+++ ExtensionClass/trunk/src/ExtensionClass/_ExtensionClass.c 2010-06-16 14:17:54 UTC (rev 113545)
@@ -820,6 +820,7 @@
typ->tp_base = &NoInstanceDictionaryBaseType;
else
typ->tp_base = &BaseType;
+ typ->tp_basicsize += typ->tp_base->tp_basicsize;
if (typ->tp_new == NULL)
typ->tp_new = PyType_GenericNew;
@@ -935,24 +936,27 @@
ExtensionClassType.ob_type = &PyType_Type;
ExtensionClassType.tp_base = &PyType_Type;
+ ExtensionClassType.tp_basicsize = PyType_Type.tp_basicsize;
ExtensionClassType.tp_traverse = PyType_Type.tp_traverse;
ExtensionClassType.tp_clear = PyType_Type.tp_clear;
/* Initialize types: */
if (PyType_Ready(&ExtensionClassType) < 0)
return;
-
+
BaseType.ob_type = &ExtensionClassType;
BaseType.tp_base = &PyBaseObject_Type;
+ BaseType.tp_basicsize = PyBaseObject_Type.tp_basicsize;
BaseType.tp_new = PyType_GenericNew;
-
+
if (PyType_Ready(&BaseType) < 0)
return;
-
+
NoInstanceDictionaryBaseType.ob_type = &ExtensionClassType;
NoInstanceDictionaryBaseType.tp_base = &BaseType;
+ NoInstanceDictionaryBaseType.tp_basicsize = BaseType.tp_basicsize;
NoInstanceDictionaryBaseType.tp_new = PyType_GenericNew;
-
+
if (PyType_Ready(&NoInstanceDictionaryBaseType) < 0)
return;
More information about the checkins
mailing list