--- Ice-3.4.1/cpp/src/Slice/CsUtil.cpp 2010-06-03 12:48:33.000000000 -0400 +++ Ice-3.4.1.slice2cs-scoping/cpp/src/Slice/CsUtil.cpp 2010-11-18 11:14:27.058555010 -0500 @@ -65,12 +65,15 @@ static StringList splitScopedName(const string& scoped) { - assert(scoped[0] == ':'); StringList ids; string::size_type next = 0; string::size_type pos; while((pos = scoped.find("::", next)) != string::npos) { + if(!next && next != pos) + { + ids.push_back(scoped.substr(next, pos)); + } pos += 2; if(pos != scoped.size()) { @@ -111,6 +115,11 @@ } if(name[0] != ':') { + if(name.find("::") != string::npos) + { + StringList ids = splitScopedName(name); + return ids.back(); + } return lookupKwd(name, baseTypes, mangleCasts); } StringList ids = splitScopedName(name);