diff options
author | Michi Henning <michi@zeroc.com> | 2007-02-08 03:47:33 +0000 |
---|---|---|
committer | Michi Henning <michi@zeroc.com> | 2007-02-08 03:47:33 +0000 |
commit | b97e1dc601473c56a5c13ce5438e4f7f3514a285 (patch) | |
tree | cba3b8a70f17290b42d7c2f61ab96339eab7524d /cpp/src/Ice/Initialize.cpp | |
parent | 3.2b update (diff) | |
download | ice-b97e1dc601473c56a5c13ce5438e4f7f3514a285.tar.bz2 ice-b97e1dc601473c56a5c13ce5438e4f7f3514a285.tar.xz ice-b97e1dc601473c56a5c13ce5438e4f7f3514a285.zip |
Bug 1337.
Diffstat (limited to 'cpp/src/Ice/Initialize.cpp')
-rw-r--r-- | cpp/src/Ice/Initialize.cpp | 47 |
1 files changed, 4 insertions, 43 deletions
diff --git a/cpp/src/Ice/Initialize.cpp b/cpp/src/Ice/Initialize.cpp index ae9d72aaee5..c6e873697a8 100644 --- a/cpp/src/Ice/Initialize.cpp +++ b/cpp/src/Ice/Initialize.cpp @@ -8,6 +8,7 @@ // ********************************************************************** #include <IceUtil/DisableWarnings.h> +#include <IceUtil/ArgVector.h> #include <Ice/GC.h> #include <Ice/CommunicatorI.h> #include <Ice/PropertiesI.h> @@ -166,50 +167,10 @@ Ice::initialize(int& argc, char* argv[], const InitializationData& initializatio CommunicatorPtr Ice::initialize(StringSeq& args, const InitializationData& initializationData, Int version) { - int origArgc; - char** argv = 0; - CommunicatorPtr communicator; - try - { - // - // Make a dummy argc/argv. - // (We can't use argsToStringSeq() because that requires an already initialized argv.) - // - int argc = static_cast<int>(args.size()); - origArgc = argc; - argv = new char*[args.size() + 1]; - int i; - for(i = 0; i != argc; ++i) - { - argv[i] = new char[args[i].size() + 1]; -#if defined(_MSC_VER) && (_MSC_VER >= 1400) - strcpy_s(argv[i], args[i].size() + 1, args[i].c_str()); -#else - strcpy(argv[i], args[i].c_str()); -#endif - } - argv[argc] = 0; - - communicator = initialize(argc, argv, initializationData, version); - - args = argsToStringSeq(argc, argv); - - for(i = 0; i < origArgc; ++i) - { - delete[] argv[i]; - } - delete[] argv; - } - catch(...) - { - for(int i = 0; i < origArgc; ++i) - { - delete[] argv[i]; - } - delete[] argv; - throw; - } + IceUtil::ArgVector av(args); + communicator = initialize(av.argc, av.argv, initializationData, version); + args = argsToStringSeq(av.argc, av.argv); return communicator; } |