aboutsummaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authorAndy Clement <aclement@pivotal.io>2015-09-02 09:49:22 -0700
committerAndy Clement <aclement@pivotal.io>2015-09-02 09:49:22 -0700
commita9ea7010ab7075d934aeb49d48dec33d48b722c4 (patch)
treeb20190f922e7d3d434d9f4cac2f95a0794aa20c1 /weaver
parent415ef622d9435806ef0736341402772487deed23 (diff)
downloadaspectj-a9ea7010ab7075d934aeb49d48dec33d48b722c4.tar.gz
aspectj-a9ea7010ab7075d934aeb49d48dec33d48b722c4.zip
Bug 475152 - infinite loop during build time weaving when more than 2 aspects in hierarchy at org.aspectj.weaver.bcel.BcelAdvice.canInline
Diffstat (limited to 'weaver')
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelAdvice.java7
1 files changed, 4 insertions, 3 deletions
diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelAdvice.java b/weaver/src/org/aspectj/weaver/bcel/BcelAdvice.java
index 64d6a1054..a9f214723 100644
--- a/weaver/src/org/aspectj/weaver/bcel/BcelAdvice.java
+++ b/weaver/src/org/aspectj/weaver/bcel/BcelAdvice.java
@@ -243,10 +243,11 @@ class BcelAdvice extends Advice {
containsInvokedynamic = 1;
LazyMethodGen lmg = boType.getLazyClassGen().getLazyMethodGen(this.signature.getName(), this.signature.getSignature(), true);
// Check Java8 supertypes
+ ResolvedType searchType = concreteAspect;
while (lmg == null) {
- ResolvedType superType = boType.getSuperclass();
- if (superType == null) break;
- ReferenceTypeDelegate rtd = ((ReferenceType)superType).getDelegate();
+ searchType = searchType.getSuperclass();
+ if (searchType == null) break;
+ ReferenceTypeDelegate rtd = ((ReferenceType)searchType).getDelegate();
if (rtd instanceof BcelObjectType) {
BcelObjectType bot = (BcelObjectType)rtd;
if (bot.javaClass.getMajor() < Constants.MAJOR_1_8) {