fix(Core/AchievementMgr): Check for null achievement before being derefenced. (#19504)

* Init.

* Reviewed changes.
This commit is contained in:
Benjamin Jackson
2024-07-28 15:40:21 -04:00
committed by GitHub
parent 54fadbda67
commit 2b636adc2f
@@ -2473,10 +2473,15 @@ bool AchievementGlobalMgr::IsStatisticAchievement(AchievementEntry const* achiev
bool AchievementGlobalMgr::IsAverageCriteria(AchievementCriteriaEntry const* criteria) const bool AchievementGlobalMgr::IsAverageCriteria(AchievementCriteriaEntry const* criteria) const
{ {
if ((sAchievementStore.LookupEntry(criteria->referredAchievement))->flags & ACHIEVEMENT_FLAG_AVERAGE) auto referencedAchievement = sAchievementStore.LookupEntry(criteria->referredAchievement);
if (!referencedAchievement)
return false;
if (referencedAchievement->flags & ACHIEVEMENT_FLAG_AVERAGE)
return true; return true;
if (AchievementEntryList const* achRefList = GetAchievementByReferencedId(criteria->referredAchievement)) if (AchievementEntryList const* achRefList = GetAchievementByReferencedId(referencedAchievement->ID))
for (AchievementEntryList::const_iterator itr = achRefList->begin(); itr != achRefList->end(); ++itr) for (AchievementEntryList::const_iterator itr = achRefList->begin(); itr != achRefList->end(); ++itr)
if ((*itr)->flags & ACHIEVEMENT_FLAG_AVERAGE) if ((*itr)->flags & ACHIEVEMENT_FLAG_AVERAGE)
return true; return true;