Fix duplicate insertion error when detecting incompatible mods.
Since f1acd22455
, mods are checked for compatibility. However, they can
incorrectly be checked & added to inompatible mods several time, leading
to a potential crash.
The new code can also be simplified slightly.
Reviewed By: Angen
Differential Revision: https://code.wildfiregames.com/D4276
This was SVN commit r25926.
This commit is contained in:
parent
ca4ee134fc
commit
dfeb29b82c
@ -324,17 +324,9 @@ std::vector<CStr> Mod::CheckForIncompatibleMods(const std::vector<CStr>& mods) c
|
||||
//0.0.24
|
||||
const CStr versionToCheck = dep.substr(pos + op.size());
|
||||
const std::unordered_map<CStr, CStr>::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;
|
||||
}
|
||||
}
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user