SLING-6261 skip null references in the table array
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1809761 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/commons/threads/impl/ThreadLocalCleaner.java b/src/main/java/org/apache/sling/commons/threads/impl/ThreadLocalCleaner.java
index fa5e599..6a0a067 100644
--- a/src/main/java/org/apache/sling/commons/threads/impl/ThreadLocalCleaner.java
+++ b/src/main/java/org/apache/sling/commons/threads/impl/ThreadLocalCleaner.java
@@ -83,7 +83,7 @@
/** 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 @@
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