From 6429c94fa9ac34beb73da02bb87f4a0d6529dd35 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Fri, 29 Apr 2022 05:31:20 +0800 Subject: [PATCH 1/2] fix stackoverflow --- .../src/main/java/forge/game/ability/AbilityUtils.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index f24d5923540..8cbb5644bd4 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -3029,6 +3029,10 @@ public class AbilityUtils { } private static void addPlayer(Iterable objects, final String def, FCollection players) { + addPlayer(objects, def, players, false); + } + + private static void addPlayer(Iterable objects, final String def, FCollection players, boolean skipRemembered) { for (Object o : objects) { if (o instanceof Player) { final Player p = (Player) o; @@ -3043,8 +3047,9 @@ public class AbilityUtils { players.add(c.getController()); } else if (def.endsWith("Owner")) { players.add(c.getOwner()); - } else if (def.endsWith("Remembered")) { - addPlayer(c.getRemembered(), def, players); + } else if (def.endsWith("Remembered") && !skipRemembered) { + //recursive call to skip so it will not cause StackOverflow, ie Riveteers Overlook + addPlayer(c.getRemembered(), def, players, true); } } else if (o instanceof SpellAbility) { final SpellAbility c = (SpellAbility) o; From 2cd6d7a047a6de5311507e02fe6185f5ec44d7af Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Fri, 29 Apr 2022 05:33:53 +0800 Subject: [PATCH 2/2] fix stackoverflow --- forge-game/src/main/java/forge/game/ability/AbilityUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index 8cbb5644bd4..68520631a61 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -3048,7 +3048,7 @@ public class AbilityUtils { } else if (def.endsWith("Owner")) { players.add(c.getOwner()); } else if (def.endsWith("Remembered") && !skipRemembered) { - //recursive call to skip so it will not cause StackOverflow, ie Riveteers Overlook + //fixme recursive call to skip so it will not cause StackOverflow, ie Riveteers Overlook addPlayer(c.getRemembered(), def, players, true); } } else if (o instanceof SpellAbility) {