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

