From 47583252c0d616af528b4492ccd0dab17f4228c8 Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Tue, 29 Sep 2015 09:43:06 -0500 Subject: [PATCH] Fixed ConcurrentModificationException in TangibleObject --- src/resources/objects/SWGObject.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/resources/objects/SWGObject.java b/src/resources/objects/SWGObject.java index f16a06eb6..2e6a630a4 100644 --- a/src/resources/objects/SWGObject.java +++ b/src/resources/objects/SWGObject.java @@ -623,7 +623,10 @@ public abstract class SWGObject implements Serializable, Comparable { } public void clearAware() { - List objects = new ArrayList<>(objectsAware); + List objects; + synchronized (objectsAware) { + objects = new ArrayList<>(objectsAware); + } for (SWGObject o : objects) { o.awarenessOutOfRange(this); awarenessOutOfRange(o); @@ -645,8 +648,13 @@ public abstract class SWGObject implements Serializable, Comparable { } private Set getObserversFromSet(Set aware, SWGObject childObject) { - Set awareExtra = new HashSet<>(aware); - awareExtra.addAll(objectsAware); + Set awareExtra; + synchronized (aware) { + synchronized (objectsAware) { + awareExtra = new HashSet<>(aware); + awareExtra.addAll(objectsAware); + } + } if (getParent() == null) { Set observers = new HashSet<>(); for (SWGObject obj : awareExtra) {