Dave Korn wrote:

+  std::string proxyString(((std::string)ProxyOption).c_str());

  I'm not a C++ expert, so maybe I'm missing something, but if I read that
right you're taking ProxyOption (type StringOption), calling the std::string
conversion operator to return a std::string, getting a const char* from that
and using it to build a std::string.

Your non-expert eyes have seen aright. It is either circumlocutious, or broken. If ProxyOption has operator std::string, this does the same thing:

        std::string proxyString(ProxyOption);

If it doesn't, the code will still compile because he's using a brute-force C style cast here. But, it would almost certainly crash.

Actually, there's a third possibility: the original author needs to truncate the string at the first embedded null character. The direct std::string copy will preserve a null.

+  std::string proxyString((std::string)ProxyOption);

Just to reinforce the point, the cast is either unhelpful or harmful. If you really must force the conversion, use one of the new-style C++ casts to limit the amount of damage.

Reply via email to