From cbc9eb15e2f951712eebbd38ee513bed59e7b85d Mon Sep 17 00:00:00 2001 From: Olivier Parcollet Date: Fri, 9 Nov 2012 13:40:05 +0100 Subject: Fix destructor name ... There appears to be a pb in 9df8c9daf10ff30a8e6506b72406d032f268a17b. For a template class, A::B::C the destructor name was C leading to code like A::B::C::~C() which does not compile on gcc (4.6, 4.7), also it seems to be correct code ... clang and intel C++ compile it, but not gcc. I changed the name to generate the code : A::B::C::~C() which compiles on gcc, clang, intel by further cutting the <...> in the destructor name. --- Cython/Compiler/ModuleNode.py | 1 + 1 file changed, 1 insertion(+) (limited to 'Cython/Compiler/ModuleNode.py') diff --git a/Cython/Compiler/ModuleNode.py b/Cython/Compiler/ModuleNode.py index d8626d2f9..051a3f128 100644 --- a/Cython/Compiler/ModuleNode.py +++ b/Cython/Compiler/ModuleNode.py @@ -1139,6 +1139,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): # Make sure the namespace delimiter was not in a template arg. while destructor_name.count('<') != destructor_name.count('>'): destructor_name = split_cname.pop() + '::' + destructor_name + destructor_name = destructor_name.split('<',1)[0] code.putln("p->%s.%s::~%s();" % (entry.cname, entry.type.declaration_code(""), destructor_name)) -- cgit v1.2.1