Author: kwin Date: Tue Sep 26 17:11:41 2017 New Revision: 1809761 URL: http://svn.apache.org/viewvc?rev=1809761&view=rev Log: SLING-6261 skip null references in the table array
Modified: sling/trunk/bundles/commons/threads/src/main/java/org/apache/sling/commons/threads/impl/ThreadLocalCleaner.java Modified: sling/trunk/bundles/commons/threads/src/main/java/org/apache/sling/commons/threads/impl/ThreadLocalCleaner.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/threads/src/main/java/org/apache/sling/commons/threads/impl/ThreadLocalCleaner.java?rev=1809761&r1=1809760&r2=1809761&view=diff ============================================================================== --- sling/trunk/bundles/commons/threads/src/main/java/org/apache/sling/commons/threads/impl/ThreadLocalCleaner.java (original) +++ sling/trunk/bundles/commons/threads/src/main/java/org/apache/sling/commons/threads/impl/ThreadLocalCleaner.java Tue Sep 26 17:11:41 2017 @@ -83,7 +83,7 @@ public class ThreadLocalCleaner { /** Notifies the {@link ThreadLocalChangeListener} about changes on thread local variables for the current thread. * - * @param field + * @param field is a field containing a ThreadLocalMap * @param backup */ private void diff(Field field, Reference<?>[] backup) { try { @@ -136,9 +136,12 @@ public class ThreadLocalCleaner { private void changed(Thread thread, Reference<?> reference, ThreadLocalChangeListener.Mode mode) throws IllegalAccessException { - listener.changed(mode, - thread, (ThreadLocal<?>) reference.get(), - threadLocalEntryValueField.get(reference)); + // just skip null reference entries (may happen if array has been resized) + if (reference != null) { + listener.changed(mode, + thread, (ThreadLocal<?>) reference.get(), + threadLocalEntryValueField.get(reference)); + } } /** @param c the class containing the field