Author: markt
Date: Wed Jan 14 16:26:00 2009
New Revision: 734579

URL: http://svn.apache.org/viewvc?rev=734579&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=37458
Correct sync issue that leads to NPE in rare circumstances
Patch provided by Konstantin Kolinko

Modified:
    tomcat/tc6.0.x/trunk/STATUS.txt
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
    tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml

Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=734579&r1=734578&r2=734579&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Wed Jan 14 16:26:00 2009
@@ -158,13 +158,6 @@
            markt - TCK passes
   -1: 
 
-* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=37458
-  Correct sync issue that leads to NPE in rare circumstances
-  Patch provided by Konstantin Kolinko
-  http://svn.apache.org/viewvc?rev=730735&view=rev
-  +1: markt, fhanik, funkman
-  -1: 
-
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46471
   Use jar url and tag file path to uniquely ID a tag file to prevent naming
   clashes

Modified: 
tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java?rev=734579&r1=734578&r2=734579&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java 
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java 
Wed Jan 14 16:26:00 2009
@@ -1793,7 +1793,11 @@
             return clazz;
 
         synchronized (this) {
-            if (entry.binaryContent == null && entry.loadedClass == null)
+            clazz = entry.loadedClass;
+            if (clazz != null)
+                return clazz;
+
+            if (entry.binaryContent == null)
                 throw new ClassNotFoundException(name);
 
             // Looking up the package
@@ -1842,26 +1846,22 @@
     
             }
 
-            if (entry.loadedClass == null) {
-                try {
-                    clazz = defineClass(name, entry.binaryContent, 0,
-                            entry.binaryContent.length, 
-                            new CodeSource(entry.codeBase, 
entry.certificates));
-                } catch (UnsupportedClassVersionError ucve) {
-                    throw new UnsupportedClassVersionError(
-                            ucve.getLocalizedMessage() + " " +
-                            sm.getString("webappClassLoader.wrongVersion",
-                                    name));
-                }
-                entry.loadedClass = clazz;
-                entry.binaryContent = null;
-                entry.source = null;
-                entry.codeBase = null;
-                entry.manifest = null;
-                entry.certificates = null;
-            } else {
-                clazz = entry.loadedClass;
-            }
+            try {
+                clazz = defineClass(name, entry.binaryContent, 0,
+                        entry.binaryContent.length, 
+                        new CodeSource(entry.codeBase, entry.certificates));
+            } catch (UnsupportedClassVersionError ucve) {
+                throw new UnsupportedClassVersionError(
+                        ucve.getLocalizedMessage() + " " +
+                        sm.getString("webappClassLoader.wrongVersion",
+                                name));
+            }
+            entry.loadedClass = clazz;
+            entry.binaryContent = null;
+            entry.source = null;
+            entry.codeBase = null;
+            entry.manifest = null;
+            entry.certificates = null;
         }
         
         return clazz;

Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=734579&r1=734578&r2=734579&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Wed Jan 14 16:26:00 2009
@@ -36,6 +36,10 @@
   <subsection name="Catalina">
     <changelog>
       <fix>
+        <bug>37458</bug>: Correct sync issue that leads to NPE in rare
+        circumstances. Patch provided by Konstantin Kolinko. (markt)
+      </fix>
+      <fix>
         <bug>42747</bug>: Ensure context.xml takes effect on first deployment
         for WAR and DIR deployments. context.xml is now copied to
         CATALINA_BASE/&lt;engine name&gt;/&lt;host name&gt; for DIR as well as



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to