diff --git a/FileSettingsReader.cpp b/FileSettingsReader.cpp index 8affbf12..ad551b6c 100644 --- a/FileSettingsReader.cpp +++ b/FileSettingsReader.cpp @@ -24,6 +24,7 @@ #include "Interface/File.h" CFileSettingsReader::CFileSettingsReader(std::string pFile) + : has_error(false) { read(pFile); } @@ -54,11 +55,17 @@ std::vector CFileSettingsReader::getKeys() return ret; } +bool CFileSettingsReader::hasError() +{ + return has_error; +} + void CFileSettingsReader::read(const std::string& pFile ) { std::auto_ptr file(Server->openFile(pFile)); if (file.get() == NULL) { + has_error = true; return; } diff --git a/FileSettingsReader.h b/FileSettingsReader.h index f39944ae..4f0ef6e9 100644 --- a/FileSettingsReader.h +++ b/FileSettingsReader.h @@ -13,10 +13,14 @@ public: virtual std::vector getKeys(); + bool hasError(); + private: void read(const std::string& pFile); std::map mSettingsMap; + + bool has_error; }; diff --git a/Server.cpp b/Server.cpp index 96d4180d..3d51d061 100644 --- a/Server.cpp +++ b/Server.cpp @@ -1393,7 +1393,13 @@ IThreadPool *CServer::getThreadPool(void) ISettingsReader* CServer::createFileSettingsReader(const std::string& pFile) { - return new CFileSettingsReader(pFile); + CFileSettingsReader* ret = new CFileSettingsReader(pFile); + if (ret->hasError()) + { + delete ret; + return NULL; + } + return ret; } ISettingsReader* CServer::createDBSettingsReader(THREAD_ID tid, DATABASE_ID pIdentifier, const std::string &pTable, const std::string &pSQL)