From 41f2b6c99fd206be23b2742712b085894d2da374 Mon Sep 17 00:00:00 2001 From: LogicParrot Date: Tue, 12 Jan 2016 15:13:53 +0200 Subject: Fixed crash introduced by #2821 --- src/Root.cpp | 60 +++++++++++++++++++++++++++++++----------------------------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/src/Root.cpp b/src/Root.cpp index dc00b5c82..71d5875a6 100644 --- a/src/Root.cpp +++ b/src/Root.cpp @@ -369,43 +369,45 @@ void cRoot::LoadWorlds(cSettingsRepositoryInterface & a_Settings, bool a_IsNewIn if (DefaultWorldName == "world") { auto DefaultWorldIniFile= cpp14::make_unique(); - assert(DefaultWorldIniFile->ReadFile("world/world.ini")); - AString NetherName = DefaultWorldIniFile->GetValue("LinkedWorlds", "NetherWorldName", ""); - AString EndName = DefaultWorldIniFile->GetValue("LinkedWorlds", "EndWorldName", ""); - if ((NetherName.compare("world_nether") == 0) && (EndName.compare("world_end") == 0)) + if (DefaultWorldIniFile->ReadFile("world/world.ini")) { - // This is a default world linkage config, see if the nether and end are in settings.ini - // If both of them are not in settings.ini, then this is a pre-#2815 default config - // so we add them to settings.ini - // Note that if only one of them is not in settings.ini, it's nondefault and we don't touch it + AString NetherName = DefaultWorldIniFile->GetValue("LinkedWorlds", "NetherWorldName", ""); + AString EndName = DefaultWorldIniFile->GetValue("LinkedWorlds", "EndWorldName", ""); + if ((NetherName.compare("world_nether") == 0) && (EndName.compare("world_end") == 0)) + { + // This is a default world linkage config, see if the nether and end are in settings.ini + // If both of them are not in settings.ini, then this is a pre-#2815 default config + // so we add them to settings.ini + // Note that if only one of them is not in settings.ini, it's nondefault and we don't touch it - bool NetherInSettings = false; - bool EndInSettings = false; + bool NetherInSettings = false; + bool EndInSettings = false; - for (auto WorldNameValue : Worlds) - { - AString ValueName = WorldNameValue.first; - if (ValueName.compare("World") != 0) - { - continue; - } - AString WorldName = WorldNameValue.second; - if (WorldName.compare("world_nether") == 0) + for (auto WorldNameValue : Worlds) { - NetherInSettings = true; + AString ValueName = WorldNameValue.first; + if (ValueName.compare("World") != 0) + { + continue; + } + AString WorldName = WorldNameValue.second; + if (WorldName.compare("world_nether") == 0) + { + NetherInSettings = true; + } + else if (WorldName.compare("world_end") == 0) + { + EndInSettings = true; + } } - else if (WorldName.compare("world_end") == 0) + + if ((!NetherInSettings) && (!EndInSettings)) { - EndInSettings = true; + a_Settings.AddValue("Worlds", "World", "world_nether"); + a_Settings.AddValue("Worlds", "World", "world_end"); + Worlds = a_Settings.GetValues("Worlds"); // Refresh the Worlds list so that the rest of the function works as usual } } - - if ((!NetherInSettings) && (!EndInSettings)) - { - a_Settings.AddValue("Worlds", "World", "world_nether"); - a_Settings.AddValue("Worlds", "World", "world_end"); - Worlds = a_Settings.GetValues("Worlds"); // Refresh the Worlds list so that the rest of the function works as usual - } } } -- cgit v1.2.3