You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mb...@apache.org on 2010/02/07 04:42:08 UTC

svn commit: r907375 - /commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java

Author: mbenson
Date: Sun Feb  7 03:42:08 2010
New Revision: 907375

URL: http://svn.apache.org/viewvc?rev=907375&view=rev
Log:
reread ThreadLocal value in synchronized block to avoid any timing issues

Modified:
    commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java

Modified: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java?rev=907375&r1=907374&r2=907375&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java (original)
+++ commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java Sun Feb  7 03:42:08 2010
@@ -536,11 +536,13 @@
      * @since 2.3
      */
     static void unregister(Object value) {
-        Set<IDKey> s = getRegistry();
-        if (s != null) {
-            s.remove(new IDKey(value));
+        Set<IDKey> registry = getRegistry();
+        if (registry != null) {
+            registry.remove(new IDKey(value));
             synchronized (HashCodeBuilder.class) {
-                if (s.isEmpty()) {
+                //read again
+                registry = getRegistry();
+                if (registry != null && registry.isEmpty()) {
                     REGISTRY.remove();
                 }
             }