1.1 --- a/openide.util.lookup/src/org/openide/util/lookup/MetaInfServicesLookup.java Tue Jan 12 09:57:55 2010 +0100
1.2 +++ b/openide.util.lookup/src/org/openide/util/lookup/MetaInfServicesLookup.java Sat Jan 16 20:00:39 2010 +0100
1.3 @@ -443,7 +443,7 @@
1.4
1.5 synchronized (knownInstances) { // guards only the static cache
1.6 int size = knownInstances.size();
1.7 - int index = c.hashCode() % size;
1.8 + int index = hashForClass(c, size);
1.9 for (int i = 0; i < size; i++) {
1.10 Reference<Object> ref = knownInstances.get(index);
1.11 Object obj = ref == null ? null : ref.get();
1.12 @@ -522,11 +522,14 @@
1.13 protected boolean creatorOf(Object obj) {
1.14 return obj == object;
1.15 }
1.16 + private static int hashForClass(Class<?> c, int size) {
1.17 + return Math.abs(c.hashCode()) % size;
1.18 + }
1.19
1.20 private static void hashPut(Object o) {
1.21 Class<?> c = o.getClass();
1.22 int size = knownInstances.size();
1.23 - int index = c.hashCode() % size;
1.24 + int index = hashForClass(c, size);
1.25 for (int i = 0; i < size; i++) {
1.26 Reference<Object> ref = knownInstances.get(index);
1.27 Object obj = ref == null ? null : ref.get();