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*);

Reply via email to