diff options
Diffstat (limited to 'cpp/src/Ice/ObjectAdapterI.cpp')
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.cpp | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp index 296a57cfcf4..232fb1adfd1 100644 --- a/cpp/src/Ice/ObjectAdapterI.cpp +++ b/cpp/src/Ice/ObjectAdapterI.cpp @@ -381,14 +381,22 @@ Ice::ObjectAdapterI::ObjectAdapterI(const InstancePtr& instance, const string& n string s(endpts); transform(s.begin(), s.end(), s.begin(), tolower); - string::size_type beg = 0; - string::size_type end; - __setNoDelete(true); try { - while (true) + string::size_type beg; + string::size_type end = 0; + + while (end < s.length()) { + static const string delim = " \t\n\r"; + + beg = s.find_first_not_of(delim, end); + if (beg == string::npos) + { + break; + } + end = s.find(':', beg); if (end == string::npos) { @@ -397,7 +405,7 @@ Ice::ObjectAdapterI::ObjectAdapterI(const InstancePtr& instance, const string& n if (end == beg) { - throw EndpointParseException(__FILE__, __LINE__); + break; } string es = s.substr(beg, end - beg); @@ -409,13 +417,8 @@ Ice::ObjectAdapterI::ObjectAdapterI(const InstancePtr& instance, const string& n // EndpointPtr endp = Endpoint::endpointFromString(instance, es); _incomingConnectionFactories.push_back(new IncomingConnectionFactory(instance, endp, this)); - - if (end == s.length()) - { - break; - } - - beg = end + 1; + + end = end + 1; } } catch(...) |