[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