From 4f0d3ea74f278709b1bfe766c8210355ca668d67 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Thu, 27 Apr 2023 20:36:28 -0400 Subject: [PATCH] fix stack overflow --- .../java/mage/game/permanent/CopiableValues.java | 2 +- .../java/mage/game/permanent/PermanentImpl.java | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Mage/src/main/java/mage/game/permanent/CopiableValues.java b/Mage/src/main/java/mage/game/permanent/CopiableValues.java index e04218ea87a..1cfa5fb676a 100644 --- a/Mage/src/main/java/mage/game/permanent/CopiableValues.java +++ b/Mage/src/main/java/mage/game/permanent/CopiableValues.java @@ -17,7 +17,7 @@ import java.util.List; public class CopiableValues extends PermanentImpl { CopiableValues() { - super(null, null, ""); + super(); } private CopiableValues(final CopiableValues permanent) { diff --git a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java index c18d24d0ff6..a5f8bca4c82 100644 --- a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java +++ b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java @@ -109,15 +109,21 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { protected Map info; protected int createOrder; protected boolean legendRuleApplies = true; - private final CopiableValues copiableValues = new CopiableValues(); + private final CopiableValues copiableValues; private static final List emptyList = Collections.unmodifiableList(new ArrayList()); + PermanentImpl() { + super(null, ""); + this.copiableValues = null; + } + public PermanentImpl(UUID ownerId, UUID controllerId, String name) { super(ownerId, name); this.originalControllerId = controllerId; this.controllerId = controllerId; this.counters = new Counters(); + this.copiableValues = new CopiableValues(); } public PermanentImpl(UUID id, UUID ownerId, UUID controllerId, String name) { @@ -125,6 +131,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { this.originalControllerId = controllerId; this.controllerId = controllerId; this.counters = new Counters(); + this.copiableValues = new CopiableValues(); } public PermanentImpl(final PermanentImpl permanent) { @@ -182,7 +189,12 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { this.morphed = permanent.morphed; this.manifested = permanent.manifested; this.createOrder = permanent.createOrder; - this.copiableValues.copyFrom(permanent.copiableValues, null); + if (permanent.copiableValues != null) { + this.copiableValues = new CopiableValues(); + this.copiableValues.copyFrom(permanent.copiableValues, null); + } else { + this.copiableValues = null; + } } @Override