diff options
Diffstat (limited to 'lib/common/Configuration.cpp')
-rw-r--r-- | lib/common/Configuration.cpp | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/lib/common/Configuration.cpp b/lib/common/Configuration.cpp index d1145bb5..c4253938 100644 --- a/lib/common/Configuration.cpp +++ b/lib/common/Configuration.cpp @@ -199,32 +199,30 @@ std::auto_ptr<Configuration> Configuration::LoadAndVerify( FdGetLine getline(file); // Object to create - Configuration *pconfig = new Configuration(std::string("<root>")); + std::auto_ptr<Configuration> apConfig( + new Configuration(std::string("<root>"))); try { // Load - LoadInto(*pconfig, getline, rErrorMsg, true); + LoadInto(*apConfig, getline, rErrorMsg, true); if(!rErrorMsg.empty()) { // An error occured, return now BOX_ERROR("Error in Configuration::LoadInto: " << rErrorMsg); - delete pconfig; - pconfig = 0; return std::auto_ptr<Configuration>(0); } // Verify? if(pVerify) { - if(!Verify(*pconfig, *pVerify, std::string(), rErrorMsg)) + if(!Verify(*apConfig, *pVerify, std::string(), + rErrorMsg)) { BOX_ERROR("Error verifying configuration: " << rErrorMsg); - delete pconfig; - pconfig = 0; return std::auto_ptr<Configuration>(0); } } @@ -232,13 +230,11 @@ std::auto_ptr<Configuration> Configuration::LoadAndVerify( catch(...) { // Clean up - delete pconfig; - pconfig = 0; throw; } // Success. Return result. - return std::auto_ptr<Configuration>(pconfig); + return apConfig; } |