X-Git-Url: http://git.buserror.net/cgi-bin/gitweb.cgi?p=polintos%2Fscott%2Fpriv.git;a=blobdiff_plain;f=idlcomp%2Fnamespace.cc;h=a2fe015b0ffad9cf59b32a8dc2044c47d35147b4;hp=b681d91736ae76c2637d0145e500f8fc97cf8753;hb=eec2efc14a0d624d475dc89e2bcb962e7c081df5;hpb=eb906c7894bb0f4788b49968a637f434133ff879 diff --git a/idlcomp/namespace.cc b/idlcomp/namespace.cc index b681d91..a2fe015 100644 --- a/idlcomp/namespace.cc +++ b/idlcomp/namespace.cc @@ -276,7 +276,7 @@ Symbol::~Symbol() if (lang_priv) lang_priv->release(); - if (ns && !ns->dying) { + if (ns) { try { ns->del(this); } @@ -287,6 +287,29 @@ Symbol::~Symbol() } } +NameSpace::~NameSpace() +{ + tbl_type::iterator i = tbl.begin(); + while (i != tbl.end()) { + Symbol *sym = (*i).second; + ++i; + + try { + del(sym); + } + + catch (SymbolNotFound) { + fprintf(stderr, "SymbolNotFound in NameSpace::~NameSpace(), cannot propagate\n"); + } + + catch (InternalError &e) { + fprintf(stderr, "InternalError %s:%d in NameSpace::~NameSpace(), cannot propagate\n", e.file, e.line); + } + } + + assert(tbl.empty()); +} + StrList *Symbol::get_fq_name(const char *append, bool not_last) const { StrList *ret;