- The cast in AbilityUtils.java:1038 is unsafe despite the comment saying otherwise. The game could crash under certain circumstances with a class cast exception (e.g. the AI attacking with Wings of the Guard into a planeswalker like Kaya, Ghost Assassin).

This commit is contained in:
Agetian
2017-11-03 06:40:52 +00:00
parent c4520a0ac2
commit af94789b7f

View File

@@ -4,7 +4,6 @@ import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import forge.card.CardType; import forge.card.CardType;
import forge.card.ColorSet; import forge.card.ColorSet;
import forge.card.MagicColor; import forge.card.MagicColor;
@@ -29,7 +28,6 @@ import forge.util.Expressions;
import forge.util.TextUtil; import forge.util.TextUtil;
import forge.util.collect.FCollection; import forge.util.collect.FCollection;
import forge.util.collect.FCollectionView; import forge.util.collect.FCollectionView;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.text.WordUtils; import org.apache.commons.lang3.text.WordUtils;
@@ -1032,10 +1030,9 @@ public class AbilityUtils {
} }
if (o instanceof List) { if (o instanceof List) {
final List<?> pList = (List<?>)o; final List<?> pList = (List<?>)o;
if (!pList.isEmpty() && pList.get(0) instanceof Player) { if (!pList.isEmpty()) {
for (final Object p : pList) { for (final Object p : pList) {
if (!players.contains(p)) { if (p instanceof Player && !players.contains(p)) {
// We now know each p in o to be an instance of Player, so cast is safe
players.add((Player) p); players.add((Player) p);
} }
} }