From: Stefan Behnel Date: Fri, 23 Apr 2010 13:00:34 +0000 (+0200) Subject: reverted last commit - only a problem for closure scope X-Git-Tag: 0.13.beta0~152 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=067c469476b9c4d10b50bce22a8080223689d2a3;p=cython.git reverted last commit - only a problem for closure scope --- diff --git a/Cython/Compiler/ModuleNode.py b/Cython/Compiler/ModuleNode.py index c2f6f0c8..641c0805 100644 --- a/Cython/Compiler/ModuleNode.py +++ b/Cython/Compiler/ModuleNode.py @@ -964,8 +964,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): py_attrs = [] for entry in scope.var_entries: if entry.type.is_pyobject: - py_attrs.append((entry.cname, entry)) - py_attrs.sort() + py_attrs.append(entry) need_self_cast = type.vtabslot_cname or py_attrs code.putln("") code.putln( @@ -1003,9 +1002,9 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): code.putln("p->%s = %s%s;" % ( type.vtabslot_cname, struct_type_cast, type.vtabptr_cname)) - for cname, entry in py_attrs: + for entry in py_attrs: if entry.name == "__weakref__": - code.putln("p->%s = 0;" % cname) + code.putln("p->%s = 0;" % entry.cname) else: code.put_init_var_to_py_none(entry, "p->%s", nanny=False) entry = scope.lookup_here("__new__") @@ -1039,15 +1038,14 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): weakref_slot = scope.lookup_here("__weakref__") for entry in scope.var_entries: if entry.type.is_pyobject and entry is not weakref_slot: - py_attrs.append((entry.cname, entry)) - py_attrs.sort() + py_attrs.append(entry) if py_attrs or weakref_slot in scope.var_entries: self.generate_self_cast(scope, code) self.generate_usr_dealloc_call(scope, code) if weakref_slot in scope.var_entries: code.putln("if (p->__weakref__) PyObject_ClearWeakRefs(o);") - for cname, entry in py_attrs: - code.put_xdecref("p->%s" % cname, entry.type, nanny=False) + for entry in py_attrs: + code.put_xdecref("p->%s" % entry.cname, entry.type, nanny=False) if base_type: tp_dealloc = TypeSlots.get_base_slot_function(scope, tp_slot) if tp_dealloc is None: @@ -1096,8 +1094,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): py_attrs = [] for entry in scope.var_entries: if entry.type.is_pyobject and entry.name != "__weakref__": - py_attrs.append((entry.cname, entry)) - py_attrs.sort() + py_attrs.append(entry) if base_type or py_attrs: code.putln("int e;") if py_attrs: @@ -1113,8 +1110,8 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): "e = %s->tp_traverse(o, v, a); if (e) return e;" % base_type.typeptr_cname) code.putln("}") - for cname, entry in py_attrs: - var_code = "p->%s" % cname + for entry in py_attrs: + var_code = "p->%s" % entry.cname code.putln( "if (%s) {" % var_code) @@ -1141,8 +1138,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): py_attrs = [] for entry in scope.var_entries: if entry.type.is_pyobject and entry.name != "__weakref__": - py_attrs.append((entry.cname, entry)) - py_attrs.sort() + py_attrs.append(entry) if py_attrs: self.generate_self_cast(scope, code) code.putln("PyObject* tmp;") @@ -1155,8 +1151,8 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): code.putln("if (%s->tp_clear) {" % base_type.typeptr_cname) code.putln("%s->tp_clear(o);" % base_type.typeptr_cname) code.putln("}") - for cname, entry in py_attrs: - name = "p->%s" % cname + for entry in py_attrs: + name = "p->%s" % entry.cname code.putln("tmp = ((PyObject*)%s);" % name) code.put_init_to_py_none(name, entry.type, nanny=False) code.putln("Py_XDECREF(tmp);")