summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-05-30 01:50:27 +0300
committerAndrei Karas <akaras@inbox.ru>2013-05-30 01:50:27 +0300
commitc56825758fb5ef6cf0094296b16be717c29c4665 (patch)
treef093c692d00503427f4ab266449ca770624bb390
parent24ed41de8f0d8049a8146efb7dff88516e997981 (diff)
downloadmv-c56825758fb5ef6cf0094296b16be717c29c4665.tar.gz
mv-c56825758fb5ef6cf0094296b16be717c29c4665.tar.bz2
mv-c56825758fb5ef6cf0094296b16be717c29c4665.tar.xz
mv-c56825758fb5ef6cf0094296b16be717c29c4665.zip
Prevent losing per server settings.
Prevent losing per server settings if partially connect to server and save settings.
-rw-r--r--src/client.cpp1
-rw-r--r--src/configuration.cpp10
-rw-r--r--src/configuration.h2
3 files changed, 13 insertions, 0 deletions
diff --git a/src/client.cpp b/src/client.cpp
index ceff605ff..4fcfaa081 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -1707,6 +1707,7 @@ int Client::gameExec()
Net::getGameHandler()->disconnect();
Net::getGameHandler()->clear();
mServerName.clear();
+ serverConfig.unload();
mState = STATE_CHOOSE_SERVER;
BLOCK_END("Client::gameExec STATE_SWITCH_SERVER")
diff --git a/src/configuration.cpp b/src/configuration.cpp
index ca2281a71..66615d12d 100644
--- a/src/configuration.cpp
+++ b/src/configuration.cpp
@@ -367,6 +367,16 @@ Configuration::~Configuration()
cleanDefaults();
}
+void Configuration::unload()
+{
+ cleanDefaults();
+ mConfigPath.clear();
+ mDirectory.clear();
+ mFilename.clear();
+ mUseResManager = false;
+ ConfigurationObject::clear();
+}
+
void Configuration::setDefaultValues(DefaultsData *const defaultsData)
{
cleanDefaults();
diff --git a/src/configuration.h b/src/configuration.h
index f2215147b..d14171dbb 100644
--- a/src/configuration.h
+++ b/src/configuration.h
@@ -251,6 +251,8 @@ class Configuration final : public ConfigurationObject
void reInit();
+ void unload();
+
/**
* Set the default values for each keys.
*