I had a very strange syntax error when attempting to use ThreadLocal
in a CNI program. It turns out that ThreadLocal has a field called
NULL, and this is distinct from Java's null. Eww...
Andrew.
2006-10-12 Andrew Haley <[EMAIL PROTECTED]>
* java/lang/InheritableThreadLocal.java: Rename NULL to sentinel.
* java/lang/ThreadLocal.java: Likewise.
Index: ThreadLocal.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/lang/ThreadLocal.java,v
retrieving revision 1.4.2.8
diff -u -r1.4.2.8 ThreadLocal.java
--- ThreadLocal.java 10 Jan 2006 15:59:40 -0000 1.4.2.8
+++ ThreadLocal.java 12 Oct 2006 12:51:12 -0000
@@ -93,7 +93,7 @@
* user. Do not expose this to the public. Package visible for use by
* InheritableThreadLocal
*/
- static final Object NULL = new Object();
+ static final Object sentinel = new Object();
/**
* Creates a ThreadLocal object without associating any value to it yet.
@@ -132,9 +132,9 @@
if (value == null)
{
value = initialValue();
- map.put(this, (T) (value == null ? NULL : value));
+ map.put(this, (T) (value == null ? sentinel : value));
}
- return value == (T) NULL ? null : value;
+ return value == (T) sentinel ? null : value;
}
/**
@@ -150,7 +150,7 @@
Map map = Thread.getThreadLocals();
// Note that we don't have to synchronize, as only this thread will
// ever modify the map.
- map.put(this, value == null ? NULL : value);
+ map.put(this, value == null ? sentinel : value);
}
/**
Index: InheritableThreadLocal.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/lang/InheritableThreadLocal.java,v
retrieving revision 1.7.2.7
diff -u -r1.7.2.7 InheritableThreadLocal.java
--- InheritableThreadLocal.java 10 Jan 2006 15:59:40 -0000 1.7.2.7
+++ InheritableThreadLocal.java 12 Oct 2006 12:51:12 -0000
@@ -107,12 +107,12 @@
{
InheritableThreadLocal local = (InheritableThreadLocal)key;
Object parentValue = parentThread.locals.get(key);
- Object childValue = local.childValue(parentValue == NULL
+ Object childValue = local.childValue(parentValue == sentinel
? null : parentValue);
if (childThread.locals == null)
childThread.locals = new WeakIdentityHashMap();
childThread.locals.put(key, (childValue == null
- ? NULL : childValue));
+ ? sentinel : childValue));
}
}
}