summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Bradshaw <robertwb@gmail.com>2013-09-12 13:59:51 -0700
committerRobert Bradshaw <robertwb@gmail.com>2013-09-12 13:59:51 -0700
commit1084fafbb4da9e8763ef09fe4c3bde8a40ed7e48 (patch)
treeacdbe712e341b80ccfb7e821b77d2a1ee21192d1
parent8d1c6b5e95961d1376f0843e156a910f09a50adc (diff)
downloadcython-1084fafbb4da9e8763ef09fe4c3bde8a40ed7e48.tar.gz
Set correct baseclass for heap allocated type subclasses.
--HG-- extra : transplant_source : E%BEhL%948%C1%07%EC%BDx%7C%7E%C2%3Fq%1D%EFE%BC
-rw-r--r--Cython/Compiler/ModuleNode.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/Cython/Compiler/ModuleNode.py b/Cython/Compiler/ModuleNode.py
index 767699318..b7f68716b 100644
--- a/Cython/Compiler/ModuleNode.py
+++ b/Cython/Compiler/ModuleNode.py
@@ -916,10 +916,14 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
code.putln(header)
base_type = type.base_type
if base_type:
+ basestruct_cname = base_type.objstruct_cname
+ if basestruct_cname == "PyTypeObject":
+ # User-defined subclasses of type are heap allocated.
+ basestruct_cname = "PyHeapTypeObject"
code.putln(
"%s%s %s;" % (
("struct ", "")[base_type.typedef_flag],
- base_type.objstruct_cname,
+ basestruct_cname,
Naming.obj_base_cname))
else:
code.putln(