diff options
author | Andy Clement <aclement@pivotal.io> | 2015-09-02 09:49:22 -0700 |
---|---|---|
committer | Andy Clement <aclement@pivotal.io> | 2015-09-02 09:49:22 -0700 |
commit | a9ea7010ab7075d934aeb49d48dec33d48b722c4 (patch) | |
tree | b20190f922e7d3d434d9f4cac2f95a0794aa20c1 /weaver | |
parent | 415ef622d9435806ef0736341402772487deed23 (diff) | |
download | aspectj-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.java | 7 |
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) { |