From feb316ccd0e6cc1ac62ab6cce481e427a781b8c7 Mon Sep 17 00:00:00 2001 From: Nathan Sweet <nathan.sweet@gmail.com> Date: Wed, 13 Jun 2012 11:07:24 +0000 Subject: [PATCH] Fixed issue 6, AccessClassLoader not tracking instances properly, not synchronized. --- .../reflectasm/AccessClassLoader.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/com/esotericsoftware/reflectasm/AccessClassLoader.java b/src/com/esotericsoftware/reflectasm/AccessClassLoader.java index c4ed1a3..c153522 100644 --- a/src/com/esotericsoftware/reflectasm/AccessClassLoader.java +++ b/src/com/esotericsoftware/reflectasm/AccessClassLoader.java @@ -10,11 +10,15 @@ class AccessClassLoader extends ClassLoader { static AccessClassLoader get (Class type) { ClassLoader parent = type.getClassLoader(); - for (int i = 0, n = accessClassLoaders.size(); i < n; i++) { - AccessClassLoader accessClassLoader = accessClassLoaders.get(i); - if (accessClassLoader.getParent() == parent) return accessClassLoader; + synchronized (accessClassLoaders) { + for (int i = 0, n = accessClassLoaders.size(); i < n; i++) { + AccessClassLoader accessClassLoader = accessClassLoaders.get(i); + if (accessClassLoader.getParent() == parent) return accessClassLoader; + } + AccessClassLoader accessClassLoader = new AccessClassLoader(parent); + accessClassLoaders.add(accessClassLoader); + return accessClassLoader; } - return new AccessClassLoader(parent); } private AccessClassLoader (ClassLoader parent) {