Fixed seemingly random server crashes caused by ArrayIndexOutOfBoundsException on unsafe type during threaded operations by synchronizing add/remove logic for PulseRunner.TASKS
This commit is contained in:
@@ -10,8 +10,11 @@ import java.util.*
|
|||||||
|
|
||||||
class PulseRunner {
|
class PulseRunner {
|
||||||
val TASKS = ArrayList<Pulse>()
|
val TASKS = ArrayList<Pulse>()
|
||||||
|
|
||||||
fun submit(pulse: Pulse){
|
fun submit(pulse: Pulse){
|
||||||
TASKS.add(pulse)
|
synchronized(this.TASKS) {
|
||||||
|
TASKS.add(pulse)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -106,7 +106,9 @@ class MajorUpdateWorker {
|
|||||||
|
|
||||||
//remove all null or finished pulses from the list
|
//remove all null or finished pulses from the list
|
||||||
rmlist.forEach {
|
rmlist.forEach {
|
||||||
GameWorld.Pulser.TASKS.remove(it)
|
synchronized(GameWorld.Pulser.TASKS) {
|
||||||
|
GameWorld.Pulser.TASKS.remove(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rmlist.clear()
|
rmlist.clear()
|
||||||
|
|||||||
Reference in New Issue
Block a user