summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThinkofdeath <thinkofdeath@spigotmc.org>2015-03-22 19:06:55 +0000
committerThinkofdeath <thinkofdeath@spigotmc.org>2015-03-22 19:06:55 +0000
commit970be7a444aa6b0dfac624b4633a8b5fe535c2ec (patch)
treefbb02f58881f9a0886e540395a39d1f14b7e3857
parent3fce0ec0f5462b0478c6b85ae5c8026f69a2911b (diff)
downloadcraftbukkit-970be7a444aa6b0dfac624b4633a8b5fe535c2ec.tar
craftbukkit-970be7a444aa6b0dfac624b4633a8b5fe535c2ec.tar.gz
craftbukkit-970be7a444aa6b0dfac624b4633a8b5fe535c2ec.tar.lz
craftbukkit-970be7a444aa6b0dfac624b4633a8b5fe535c2ec.tar.xz
craftbukkit-970be7a444aa6b0dfac624b4633a8b5fe535c2ec.zip
Fix thread safety issues in EntitySlice
-rw-r--r--nms-patches/EntitySlice.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/nms-patches/EntitySlice.patch b/nms-patches/EntitySlice.patch
new file mode 100644
index 00000000..d8d2c985
--- /dev/null
+++ b/nms-patches/EntitySlice.patch
@@ -0,0 +1,38 @@
+--- /home/matt/mc-dev-private//net/minecraft/server/EntitySlice.java 2015-03-22 19:06:47.125875941 +0000
++++ src/main/java/net/minecraft/server/EntitySlice.java 2015-03-22 19:06:47.125875941 +0000
+@@ -12,7 +12,7 @@
+
+ public class EntitySlice<T> extends AbstractSet<T> {
+
+- private static final Set<Class<?>> a = Sets.newHashSet();
++ private static final Set<Class<?>> a = Sets.newConcurrentHashSet(); // CraftBukkit
+ private final Map<Class<?>, List<T>> b = Maps.newHashMap();
+ private final Set<Class<?>> c = Sets.newIdentityHashSet();
+ private final Class<T> d;
+@@ -40,7 +40,7 @@
+ Object object = iterator.next();
+
+ if (oclass.isAssignableFrom(object.getClass())) {
+- this.a(object, oclass);
++ this.a((T) object, oclass);
+ }
+ }
+
+@@ -77,7 +77,7 @@
+ List list = (List) this.b.get(oclass);
+
+ if (list == null) {
+- this.b.put(oclass, Lists.newArrayList(new Object[] { t0}));
++ this.b.put(oclass, Lists.newArrayList(t0));
+ } else {
+ list.add(t0);
+ }
+@@ -125,7 +125,7 @@
+ }
+
+ public Iterator<T> iterator() {
+- return this.e.isEmpty() ? Iterators.emptyIterator() : Iterators.unmodifiableIterator(this.e.iterator());
++ return this.e.isEmpty() ? Iterators.<T>emptyIterator() : Iterators.unmodifiableIterator(this.e.iterator());
+ }
+
+ public int size() {