From 1a3b1fbad534553c965c379bc1fd6f51eabe4b08 Mon Sep 17 00:00:00 2001 From: Robert Bradshaw <robertwb@math.washington.edu> Date: Wed, 8 Oct 2008 02:22:20 -0700 Subject: [PATCH] More struct cleanup. --- Cython/Compiler/PyrexTypes.py | 4 +++- Cython/Compiler/Symtab.py | 8 -------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/Cython/Compiler/PyrexTypes.py b/Cython/Compiler/PyrexTypes.py index b6519df5c..e51b0edc8 100644 --- a/Cython/Compiler/PyrexTypes.py +++ b/Cython/Compiler/PyrexTypes.py @@ -953,9 +953,11 @@ class CStructOrUnionType(CType): code.putln("res = PyDict_New(); if (res == NULL) return NULL;") for member in self.scope.var_entries: if member.type.to_py_function and member.type.create_convert_utility_code(env): + interned_name = env.get_string_const(member.name, identifier=True) + env.add_py_string(interned_name) code.putln("member = %s(s.%s); if (member == NULL) goto bad;" % ( member.type.to_py_function, member.cname)) - code.putln("if (PyDict_SetItem(res, %s, member) < 0) goto bad;" % member.py_name.pystring_cname) + code.putln("if (PyDict_SetItem(res, %s, member) < 0) goto bad;" % interned_name.pystring_cname) code.putln("Py_DECREF(member);") else: self.to_py_function = None diff --git a/Cython/Compiler/Symtab.py b/Cython/Compiler/Symtab.py index 1547dc829..c166953b7 100644 --- a/Cython/Compiler/Symtab.py +++ b/Cython/Compiler/Symtab.py @@ -359,8 +359,6 @@ class Scope: self.type_entries.append(entry) if not scope and not entry.type.scope: self.check_for_illegal_incomplete_ctypedef(typedef_flag, pos) - if scope and self.outer_scope: - scope.module_scope = self return entry def check_previous_typedef_flag(self, entry, typedef_flag, pos): @@ -1207,8 +1205,6 @@ class GeneratorLocalScope(LocalScope): class StructOrUnionScope(Scope): # Namespace of a C struct or union. - module_scope = None - def __init__(self, name="?"): Scope.__init__(self, name, None, None) @@ -1221,10 +1217,6 @@ class StructOrUnionScope(Scope): type = PyrexTypes.CPtrType(type) entry = self.declare(name, cname, type, pos, visibility) entry.is_variable = 1 - if self.module_scope: - py_name = self.module_scope.get_string_const(name, identifier=True) - self.module_scope.add_py_string(py_name) - entry.py_name = py_name self.var_entries.append(entry) if type.is_pyobject and not allow_pyobject: error(pos, -- 2.30.9