瀏覽代碼

Fix possible crash on opening unit window if unit has both ability and
artifact bonus

Ivan Savenko 9 月之前
父節點
當前提交
9cf75713d0
共有 1 個文件被更改,包括 5 次插入1 次删除
  1. 5 1
      client/windows/CCreatureWindow.cpp

+ 5 - 1
client/windows/CCreatureWindow.cpp

@@ -838,7 +838,11 @@ void CStackWindow::initBonusesList()
 
 	std::sort(input.begin(), input.end(), [this](std::shared_ptr<Bonus> v1, std::shared_ptr<Bonus> & v2){
 		if (v1->source != v2->source)
-			return v1->source == BonusSource::CREATURE_ABILITY || (v1->source < v2->source);
+		{
+			int priorityV1 = v1->source == BonusSource::CREATURE_ABILITY ? -1 : static_cast<int>(v1->source);
+			int priorityV2 = v2->source == BonusSource::CREATURE_ABILITY ? -1 : static_cast<int>(v2->source);
+			return priorityV1 < priorityV2;
+		}
 		else
 			return  info->stackNode->bonusToString(v1, false) < info->stackNode->bonusToString(v2, false);
 	});