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