mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Fix running out of memory from too many waiting triggers (#8466)
This commit is contained in:
@@ -262,9 +262,16 @@ public class TriggerHandler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// too many waiting triggers might cause OutOfMemory exception
|
||||||
|
// such high amount usually happens from looping on one type:
|
||||||
|
// e.g. Heroes' Bane counters ability
|
||||||
|
// we can just run further triggers directly, side effects are highly unlikely
|
||||||
|
// (could also make this depend on Runtime.getRuntime().freeMemory()
|
||||||
|
// - but probably overkill)
|
||||||
|
boolean canWait = waitingTriggers.size() < 9999;
|
||||||
if (mode == TriggerType.Always) {
|
if (mode == TriggerType.Always) {
|
||||||
runStateTrigger(runParams);
|
runStateTrigger(runParams);
|
||||||
} else if ((game.getStack().isFrozen() || holdTrigger) && mode != TriggerType.TapsForMana && mode != TriggerType.ManaAdded) {
|
} else if (canWait && (game.getStack().isFrozen() || holdTrigger) && mode != TriggerType.TapsForMana && mode != TriggerType.ManaAdded) {
|
||||||
waitingTriggers.add(new TriggerWaiting(mode, runParams));
|
waitingTriggers.add(new TriggerWaiting(mode, runParams));
|
||||||
} else {
|
} else {
|
||||||
runWaitingTrigger(new TriggerWaiting(mode, runParams));
|
runWaitingTrigger(new TriggerWaiting(mode, runParams));
|
||||||
|
|||||||
Reference in New Issue
Block a user