From 3cab69c389d5759a5ae3f29079f386c97626fca0 Mon Sep 17 00:00:00 2001 From: Dobrohotov Alexei Date: Sat, 3 Jul 2021 01:03:57 +0300 Subject: [PATCH] Fix ShowMap partial match filtering (bug #6115) --- CHANGELOG.md | 1 + apps/openmw/mwscript/guiextensions.cpp | 13 +++++-------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 828bc1d9ff..5bcf27301a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Bug #5483: AutoCalc flag is not used to calculate spells cost Bug #6066: addtopic "return" does not work from within script. No errors thrown Bug #6101: Disarming trapped unlocked owned objects isn't considered a crime + Bug #6115: Showmap overzealous matching 0.47.0 ------ diff --git a/apps/openmw/mwscript/guiextensions.cpp b/apps/openmw/mwscript/guiextensions.cpp index cb1e5cd91d..f0bc90e044 100644 --- a/apps/openmw/mwscript/guiextensions.cpp +++ b/apps/openmw/mwscript/guiextensions.cpp @@ -124,17 +124,14 @@ namespace MWScript const MWWorld::Store &cells = MWBase::Environment::get().getWorld()->getStore().get(); - MWWorld::Store::iterator it = cells.extBegin(); - for (; it != cells.extEnd(); ++it) + MWBase::WindowManager *winMgr = MWBase::Environment::get().getWindowManager(); + + for (auto it = cells.extBegin(); it != cells.extEnd(); ++it) { std::string name = it->mName; ::Misc::StringUtils::lowerCaseInPlace(name); - if (name.find(cell) != std::string::npos) - MWBase::Environment::get().getWindowManager()->addVisitedLocation ( - it->mName, - it->getGridX(), - it->getGridY() - ); + if (name.length() >= cell.length() && name.substr(0, cell.length()) == cell) + winMgr->addVisitedLocation(it->mName, it->getGridX(), it->getGridY()); } } };