From: Thomas Hunger Date: Wed, 19 Sep 2007 22:28:47 +0000 (+0200) Subject: The changes for code execution registered the X-Git-Tag: 0.9.6.14~29^2~134 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=174886bff063947cbe5bf5454e1e331b8c177e50;p=cython.git 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. --- 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