From 174886bff063947cbe5bf5454e1e331b8c177e50 Mon Sep 17 00:00:00 2001 From: Thomas Hunger Date: Thu, 20 Sep 2007 00:28:47 +0200 Subject: [PATCH] The changes for code execution registered the scope-entry as a variable. This means that analyse_attribute expects to find a pointer to a member of the c-object struct. This is not the case for members, so we need a special case. --- Cython/Compiler/ExprNodes.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Cython/Compiler/ExprNodes.py b/Cython/Compiler/ExprNodes.py index 06067b5f..ac974a6b 100644 --- a/Cython/Compiler/ExprNodes.py +++ b/Cython/Compiler/ExprNodes.py @@ -1684,10 +1684,13 @@ class AttributeNode(ExprNode): if entry: if obj_type.is_extension_type and entry.name == "__weakref__": error(self.pos, "Illegal use of special attribute __weakref__") - if entry.is_variable or entry.is_cmethod: - self.type = entry.type - self.member = entry.cname - return + # methods need the normal attribute lookup + # because they do not have struct entries + if not entry.is_method: + if entry.is_variable or entry.is_cmethod: + self.type = entry.type + self.member = entry.cname + return else: # If it's not a variable or C method, it must be a Python # method of an extension type, so we treat it like a Python -- 2.26.2