#178688: Making sure the % is always taken from a positive integer
authorJaroslav Tulach <jtulach@netbeans.org>
Sat, 16 Jan 2010 20:00:39 +0100
changeset 9638d7cb0c81b7e
parent 962 4e7bfa1677e2
child 964 faa6af0fb4ff
#178688: Making sure the % is always taken from a positive integer
openide.util.lookup/src/org/openide/util/lookup/MetaInfServicesLookup.java
     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();