diff -uNr Pyrex-0.9.3.orig/Pyrex/Compiler/ExprNodes.py Pyrex-0.9.3.patched/Pyrex/Compiler/ExprNodes.py --- Pyrex-0.9.3.orig/Pyrex/Compiler/ExprNodes.py 2005-06-16 20:23:45.000000000 +0200 +++ Pyrex-0.9.3.patched/Pyrex/Compiler/ExprNodes.py 2005-06-16 20:24:03.000000000 +0200 @@ -1580,16 +1580,18 @@ return NameNode.is_ephemeral(self) def result_code(self): - return self.select_code() + return self.select_code()[0] def result_as_extension_type(self): return self.uncast_select_code() def select_code(self): - code = self.uncast_select_code() + orig_code = self.uncast_select_code() if self.type.is_extension_type: - code = "((PyObject *)%s)" % code - return code + code = "((PyObject *)%s)" % orig_code + else: + code = orig_code + return code, orig_code def uncast_select_code(self): obj_type = self.obj.type @@ -1642,13 +1644,13 @@ code.error_goto(self.pos))) rhs.generate_disposal_code(code) else: - select_code = self.select_code() + select_code, orig_code = self.select_code() if self.type.is_pyobject: rhs.make_owned_reference(code) code.put_decref(select_code, self.type) code.putln( "%s = %s;" % ( - select_code, + orig_code, rhs.result)) rhs.generate_post_assignment_code(code) self.obj.generate_disposal_code(code)