From 5a3f557b194976a4815f5ae3892c8c7da8723b99 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Thu, 3 Mar 2011 22:06:11 +0300 Subject: [PATCH] [11216] Fixed crash at explictly empty string setting for dataDir in mangosd.conf. --- src/game/World.cpp | 17 +++++++++++------ src/shared/revision_nr.h | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/game/World.cpp b/src/game/World.cpp index 5823e2265..32f890ba4 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -839,19 +839,24 @@ void World::LoadConfigSettings(bool reload) setConfigPos(CONFIG_UINT32_CHARDELETE_KEEP_DAYS, "CharDelete.KeepDays", 30); ///- Read the "Data" directory from the config file - std::string dataPath = sConfig.GetStringDefault("DataDir","./"); - if( dataPath.at(dataPath.length()-1)!='/' && dataPath.at(dataPath.length()-1)!='\\' ) + std::string dataPath = sConfig.GetStringDefault("DataDir", "./"); + + // for empty string use current dir as for absent case + if (dataPath.empty()) + dataPath = "./"; + // normalize dir path to path/ or path\ form + else if (dataPath.at(dataPath.length()-1) != '/' && dataPath.at(dataPath.length()-1) != '\\') dataPath.append("/"); - if(reload) + if (reload) { - if(dataPath!=m_dataPath) - sLog.outError("DataDir option can't be changed at mangosd.conf reload, using current value (%s).",m_dataPath.c_str()); + if (dataPath != m_dataPath) + sLog.outError("DataDir option can't be changed at mangosd.conf reload, using current value (%s).", m_dataPath.c_str()); } else { m_dataPath = dataPath; - sLog.outString("Using DataDir %s",m_dataPath.c_str()); + sLog.outString("Using DataDir %s", m_dataPath.c_str()); } setConfig(CONFIG_BOOL_VMAP_INDOOR_CHECK, "vmap.enableIndoorCheck", true); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 7b91ec5ac..c257772f9 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "11215" + #define REVISION_NR "11216" #endif // __REVISION_NR_H__