[jboss-cvs] JBossAS SVN: r59090 - branches/Branch_4_0/aspects/src/main/org/jboss/aop/deployment
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Dec 18 16:28:21 EST 2006
Author: kabir.khan at jboss.com
Date: 2006-12-18 16:28:19 -0500 (Mon, 18 Dec 2006)
New Revision: 59090
Modified:
branches/Branch_4_0/aspects/src/main/org/jboss/aop/deployment/ScopedJBossClassPool.java
Log:
[JBAOP-330] Infinite loop in ScopedJBossClassPool/ClassPool if a class cannot be found in the discovered pool. Add a threadlocal to make sure that we don't recurse infinitely
Modified: branches/Branch_4_0/aspects/src/main/org/jboss/aop/deployment/ScopedJBossClassPool.java
===================================================================
--- branches/Branch_4_0/aspects/src/main/org/jboss/aop/deployment/ScopedJBossClassPool.java 2006-12-18 18:43:26 UTC (rev 59089)
+++ branches/Branch_4_0/aspects/src/main/org/jboss/aop/deployment/ScopedJBossClassPool.java 2006-12-18 21:28:19 UTC (rev 59090)
@@ -51,6 +51,7 @@
WeakReference repository = null;
UrlInfo urlInfo;
+ ThreadLocal lastPool = new ThreadLocal();
protected ScopedJBossClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository, File tmp, URL tmpURL)
{
@@ -171,11 +172,24 @@
try
{
ClassPool pool = getCorrectPoolForResource(url);
- return pool.get(classname);
+ if (pool != lastPool.get())
+ {
+ lastPool.set(pool);
+ return pool.get(classname);
+ }
}
catch (NotFoundException e)
{
}
+ catch(StackOverflowError e)
+ {
+ throw e;
+ }
+ finally
+ {
+ lastPool.set(null);
+ }
+
return null;
}
More information about the jboss-cvs-commits
mailing list