diff --git a/source/ps/Mod.cpp b/source/ps/Mod.cpp index 4247815828..85ed4b4d96 100644 --- a/source/ps/Mod.cpp +++ b/source/ps/Mod.cpp @@ -324,17 +324,9 @@ std::vector Mod::CheckForIncompatibleMods(const std::vector& mods) c //0.0.24 const CStr versionToCheck = dep.substr(pos + op.size()); const std::unordered_map::iterator it = modNameVersions.find(modToCheck); - if (it == modNameVersions.end()) - { + // Could not find the mod, or 0.0.25(0ad) , <=, 0.0.24(required version) + if (it == modNameVersions.end() || !CompareVersionStrings(it->second, op, versionToCheck)) incompatibleMods.push_back(mod); - continue; - } - // 0.0.25(0ad) , <=, 0.0.24(required version) - if (!CompareVersionStrings(it->second, op, versionToCheck)) - { - incompatibleMods.push_back(mod); - continue; - } break; } } diff --git a/source/ps/tests/test_Mod.h b/source/ps/tests/test_Mod.h index a2c302dbc2..4cda39881a 100644 --- a/source/ps/tests/test_Mod.h +++ b/source/ps/tests/test_Mod.h @@ -128,6 +128,10 @@ public: mods.push_back("public"); mods.push_back("does_not_exist"); TS_ASSERT(!m_Mods.CheckForIncompatibleMods(mods).empty()); + + mods.clear(); + mods.push_back("good2"); + TS_ASSERT(m_Mods.CheckForIncompatibleMods(mods).size() == 1); } void test_play_compatible()