From 637649c993561ddd356267353682bf0675701e3d Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Wed, 10 Jun 2020 12:29:38 +0200 Subject: [PATCH] Deal with talent indices that are out of bounds. --- src/Library/CreatureData/SpeciesVariant.hpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Library/CreatureData/SpeciesVariant.hpp b/src/Library/CreatureData/SpeciesVariant.hpp index 6fbd12b..5232968 100644 --- a/src/Library/CreatureData/SpeciesVariant.hpp +++ b/src/Library/CreatureData/SpeciesVariant.hpp @@ -47,9 +47,16 @@ namespace CreatureLib::Library { [[nodiscard]] const size_t GetTalentCount() const { return _talents.Count(); } [[nodiscard]] const size_t GetSecretTalentCount() const { return _secretTalents.Count(); } [[nodiscard]] const ArbUt::CaseInsensitiveConstString& GetTalent(const TalentIndex& index) const { - if (index.IsSecret()) - return _secretTalents.At(index.GetIndex()); - return _talents.At(index.GetIndex()); + if (index.IsSecret() && _secretTalents.Count() > 0) { + auto i = index.GetIndex(); + if (i > _secretTalents.Count()) + i = _secretTalents.Count(); + return _secretTalents.At(i); + } + auto i = index.GetIndex(); + if (i > _talents.Count()) + i = _talents.Count(); + return _talents.At(i); } [[nodiscard]] const TalentIndex GetTalentIndex(const ArbUt::CaseInsensitiveConstString& talent) const;