diff --git a/sflphone-common/src/main.cpp b/sflphone-common/src/main.cpp index 6aa34c5144fa599ae6dfc0e06b85623c0be909b3..6c9d3083d66c1302f1a2ac1c0fa25983564d888e 100644 --- a/sflphone-common/src/main.cpp +++ b/sflphone-common/src/main.cpp @@ -33,6 +33,7 @@ #include <libintl.h> #include <cstring> #include <iostream> +#include <memory> // for auto_ptr #include <string> #include <dirent.h> #include <sys/stat.h> @@ -71,7 +72,10 @@ main (int argc, char **argv) Logger::setConsoleLog (false); Logger::setDebugMode (false); - CommandOptionParse * args = makeCommandOptionParse (argc, argv, ""); + // makeCommandOptionParse allocates the object with operator new, so + // auto_ptr is fine in this context. + // TODO: This should eventually be replaced with std::unique_ptr for C++0x + std::auto_ptr<CommandOptionParse> args(makeCommandOptionParse (argc, argv, "")); printf ("SFLphone Daemon %s, by Savoir-Faire Linux 2004-2011\n", VERSION); printf ("http://www.sflphone.org/\n"); @@ -80,8 +84,7 @@ main (int argc, char **argv) std::cerr << args->printUsage(); ::exit (0); } - - if (args->argsHaveError()) { + else if (args->argsHaveError()) { std::cerr << args->printErrors(); std::cerr << args->printUsage(); ::exit (1); @@ -97,8 +100,6 @@ main (int argc, char **argv) Logger::setDebugMode (true); } - delete args; - FILE *fp; char homepid[128]; char sfldir[128];