From add34060fde735ea932ca49fbe79e473c5a4f40b Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Tue, 31 Dec 2019 04:33:38 +0100 Subject: WeakIdentityHashMap: Always null check on weakRef.get(); IdentityWeakReference: hash is final. --- .../jogamp/common/util/WeakIdentityHashMap.java | 41 ++++++++++++---------- 1 file changed, 23 insertions(+), 18 deletions(-) (limited to 'src/java/com/jogamp/common/util/WeakIdentityHashMap.java') diff --git a/src/java/com/jogamp/common/util/WeakIdentityHashMap.java b/src/java/com/jogamp/common/util/WeakIdentityHashMap.java index fd865ba..b3b5bc0 100644 --- a/src/java/com/jogamp/common/util/WeakIdentityHashMap.java +++ b/src/java/com/jogamp/common/util/WeakIdentityHashMap.java @@ -172,24 +172,26 @@ public class WeakIdentityHashMap implements Map { final Set> ret = new HashSet<>(); for (final Map.Entry, V> ref : backingStore.entrySet()) { final K key = ref.getKey().get(); - final V value = ref.getValue(); - final Map.Entry entry = new Map.Entry() { - @Override - public K getKey() { - return key; - } + if( null != key ) { + final V value = ref.getValue(); + final Map.Entry entry = new Map.Entry() { + @Override + public K getKey() { + return key; + } - @Override - public V getValue() { - return value; - } + @Override + public V getValue() { + return value; + } - @Override - public V setValue(final V value) { - throw new UnsupportedOperationException(); - } - }; - ret.add(entry); + @Override + public V setValue(final V value) { + throw new UnsupportedOperationException(); + } + }; + ret.add(entry); + } } return Collections.unmodifiableSet(ret); } @@ -199,7 +201,10 @@ public class WeakIdentityHashMap implements Map { reap(); final Set ret = new HashSet<>(); for (final IdentityWeakReference ref : backingStore.keySet()) { - ret.add(ref.get()); + final K key = ref.get(); + if( null != key ) { + ret.add(key); + } } return Collections.unmodifiableSet(ret); } @@ -283,7 +288,7 @@ public class WeakIdentityHashMap implements Map { } private static class IdentityWeakReference extends WeakReference { - int hash; + final int hash; IdentityWeakReference(final K obj, final ReferenceQueue q) { super(obj, q); -- cgit v1.2.3