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