summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Initialize.cpp
diff options
context:
space:
mode:
authorMichi Henning <michi@zeroc.com>2007-02-08 03:47:33 +0000
committerMichi Henning <michi@zeroc.com>2007-02-08 03:47:33 +0000
commitb97e1dc601473c56a5c13ce5438e4f7f3514a285 (patch)
treecba3b8a70f17290b42d7c2f61ab96339eab7524d /cpp/src/Ice/Initialize.cpp
parent3.2b update (diff)
downloadice-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.cpp47
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;
}