From a207b5e419d7b04a6ec3df9b008de262255a1ee2 Mon Sep 17 00:00:00 2001 From: Evil Eye Date: Mon, 17 Oct 2022 09:37:56 +0200 Subject: [PATCH] Prevent potentially returning garbage flags --- apps/openmw/mwbase/dialoguemanager.hpp | 2 +- apps/openmw/mwdialogue/dialoguemanagerimp.cpp | 7 +++++-- apps/openmw/mwdialogue/dialoguemanagerimp.hpp | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwbase/dialoguemanager.hpp b/apps/openmw/mwbase/dialoguemanager.hpp index 889da6de71..b84aa17ec1 100644 --- a/apps/openmw/mwbase/dialoguemanager.hpp +++ b/apps/openmw/mwbase/dialoguemanager.hpp @@ -89,7 +89,7 @@ namespace MWBase }; virtual std::list getAvailableTopics() = 0; - virtual int getTopicFlag(const std::string&) = 0; + virtual int getTopicFlag(const std::string&) const = 0; virtual bool checkServiceRefused(ResponseCallback* callback, ServiceType service = ServiceType::Any) = 0; diff --git a/apps/openmw/mwdialogue/dialoguemanagerimp.cpp b/apps/openmw/mwdialogue/dialoguemanagerimp.cpp index 4deab10647..c12da74c4d 100644 --- a/apps/openmw/mwdialogue/dialoguemanagerimp.cpp +++ b/apps/openmw/mwdialogue/dialoguemanagerimp.cpp @@ -424,9 +424,12 @@ namespace MWDialogue return keywordList; } - int DialogueManager::getTopicFlag(const std::string& topicId) + int DialogueManager::getTopicFlag(const std::string& topicId) const { - return mActorKnownTopics[topicId].mFlags; + auto known = mActorKnownTopics.find(topicId); + if (known != mActorKnownTopics.end()) + return known->second.mFlags; + return 0; } void DialogueManager::keywordSelected(const std::string& keyword, ResponseCallback* callback) diff --git a/apps/openmw/mwdialogue/dialoguemanagerimp.hpp b/apps/openmw/mwdialogue/dialoguemanagerimp.hpp index ae6824c57c..c4599e7550 100644 --- a/apps/openmw/mwdialogue/dialoguemanagerimp.hpp +++ b/apps/openmw/mwdialogue/dialoguemanagerimp.hpp @@ -82,7 +82,7 @@ namespace MWDialogue bool startDialogue(const MWWorld::Ptr& actor, ResponseCallback* callback) override; std::list getAvailableTopics() override; - int getTopicFlag(const std::string& topicId) override; + int getTopicFlag(const std::string& topicId) const override; bool inJournal(const std::string& topicId, const std::string& infoId) override;