Package: openc++ Version: 2.8-4 Severity: normal
Hi,
as reported in : http://sourceforge.net/mailarchive/message.php?msg_id=2386226
Environment::isNamespace() always return 0 even on a namespace environment.
patch in attached file, successfully tested locally
Regards
-- Mathieu Roger
diff -Naur opencxx-2.8/opencxx/Environment.cc opencxx-2.8.patched/opencxx/Environment.cc --- opencxx-2.8/opencxx/Environment.cc 2005-05-13 23:58:40.000000000 +0200 +++ opencxx-2.8.patched/opencxx/Environment.cc 2005-05-12 21:06:36.000000000 +0200 @@ -80,6 +80,17 @@ namespace_name = 0; } +Environment::Environment(Environment* e, Ptree* name) +: baseclasses_or_using(0), namespaces(0) +{ + htable = new HashTable; + next = e; + metaobject = 0; + walker = e->walker; + namespace_name = name; +} + + Environment::Environment(Environment* e, Walker* w) : baseclasses_or_using(0), namespaces(0) { diff -Naur opencxx-2.8/opencxx/Environment.h opencxx-2.8.patched/opencxx/Environment.h --- opencxx-2.8/opencxx/Environment.h 2005-05-13 23:58:40.000000000 +0200 +++ opencxx-2.8.patched/opencxx/Environment.h 2005-05-12 21:07:31.000000000 +0200 @@ -51,6 +51,9 @@ public: Environment(Walker* w); Environment(Environment* e); + + /// Constructing a New namespace environment. + Environment(Environment* e, Ptree* name); Environment(Environment* e, Walker* w); bool IsEmpty(); diff -Naur opencxx-2.8/opencxx/Walker.cc opencxx-2.8.patched/opencxx/Walker.cc --- opencxx-2.8/opencxx/Walker.cc 2005-05-13 23:58:40.000000000 +0200 +++ opencxx-2.8.patched/opencxx/Walker.cc 2005-05-12 21:54:43.000000000 +0200 @@ -111,12 +111,12 @@ env = new Environment(env); } -void Walker::NewScope(Environment* e) +void Walker::NewScope(Environment* e, Ptree* name) { if (e != 0) env = e; else - env = new Environment(env); + env = new Environment(env, name); } void Walker::NewScope(Class* metaobject) @@ -384,7 +384,8 @@ Ptree* body = PtreeUtil::Third(def); Environment* name_space = env->LookupNamespace0(name); - NewScope(name_space); + + NewScope(name_space,name); Ptree* body2 = Translate(body); Environment* name_space2 = ExitScope(); diff -Naur opencxx-2.8/opencxx/Walker.h opencxx-2.8.patched/opencxx/Walker.h --- opencxx-2.8/opencxx/Walker.h 2005-05-13 23:58:40.000000000 +0200 +++ opencxx-2.8.patched/opencxx/Walker.h 2005-05-12 21:08:22.000000000 +0200 @@ -192,7 +192,7 @@ }; void NewScope(); - void NewScope(Environment*); + void NewScope(Environment*, Ptree*); void NewScope(Class*); Environment* ExitScope(); void RecordBaseclassEnv(Ptree*);