From: Andy Clement Date: Thu, 7 Jan 2016 20:56:05 +0000 (-0800) Subject: Fix 470658: Corrupted Local Variable Table X-Git-Tag: V1_8_8 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=fd87bd57bd3c0b1533cc2803f06e7569b2f363b6;p=aspectj.git Fix 470658: Corrupted Local Variable Table --- diff --git a/weaver/src/org/aspectj/weaver/bcel/LazyMethodGen.java b/weaver/src/org/aspectj/weaver/bcel/LazyMethodGen.java index 97e73832b..869ed5819 100644 --- a/weaver/src/org/aspectj/weaver/bcel/LazyMethodGen.java +++ b/weaver/src/org/aspectj/weaver/bcel/LazyMethodGen.java @@ -1324,6 +1324,16 @@ public final class LazyMethodGen implements Traceable { } } } + if (!this.enclosingClass.getWorld().generateNewLvts) { + // Here the generateNewLvts option is used to control "Do not damage unusually positioned local + // variables that represent method parameters". Strictly speaking local variables that represent + // method parameters effectively have a bytecode range from 0..end_of_method - however some + // tools generate bytecode that specifies a compressed range. The code below would normally + // extend the parameter local variables to cover the full method but by setting paramSlots to -1 + // here we cause the code below to avoid modifying any local vars that represent method + // parameters. + paramSlots = -1; + } Map> duplicatedLocalMap = new HashMap>(); for (LocalVariableTag tag : localVariables.keySet()) {