Return-Path: Delivered-To: apmail-tomcat-dev-archive@www.apache.org Received: (qmail 38378 invoked from network); 2 Jan 2009 14:24:59 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 2 Jan 2009 14:24:59 -0000 Received: (qmail 31067 invoked by uid 500); 2 Jan 2009 14:24:57 -0000 Delivered-To: apmail-tomcat-dev-archive@tomcat.apache.org Received: (qmail 30998 invoked by uid 500); 2 Jan 2009 14:24:57 -0000 Mailing-List: contact dev-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Developers List" Delivered-To: mailing list dev@tomcat.apache.org Received: (qmail 30987 invoked by uid 99); 2 Jan 2009 14:24:57 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Jan 2009 06:24:57 -0800 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Jan 2009 14:24:56 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 4504523889C2; Fri, 2 Jan 2009 06:24:36 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r730735 - /tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java Date: Fri, 02 Jan 2009 14:24:36 -0000 To: dev@tomcat.apache.org From: markt@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090102142436.4504523889C2@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: markt Date: Fri Jan 2 06:24:35 2009 New Revision: 730735 URL: http://svn.apache.org/viewvc?rev=730735&view=rev Log: Fix https://issues.apache.org/bugzilla/attachment.cgi?id=23066 Sync issue leads to NPE in rare circumstances Patch provided by Konstantin Kolinko Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java?rev=730735&r1=730734&r2=730735&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java (original) +++ tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java Fri Jan 2 06:24:35 2009 @@ -1794,7 +1794,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 @@ -1843,26 +1847,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; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org For additional commands, e-mail: dev-help@tomcat.apache.org