aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBenedikt Ritter <britter@apache.org>2017-08-30 19:28:20 +0000
committerBenedikt Ritter <britter@apache.org>2017-08-30 19:28:20 +0000
commit93c12bbb6d22a165a407b6184cdb40545f86c683 (patch)
treefe0483f9f40f3485ce9c56c340e922fe5e01fcd0 /src
parentefc4809b7b73febc18cdd8976ff8e9d6d4537ade (diff)
downloadapache-commons-bcel-93c12bbb6d22a165a407b6184cdb40545f86c683.tar.gz
BCEL-287: IINC does not handle -128 properly. Thanks to Mark Roberts
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/bcel/trunk@1806726 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r--src/changes/changes.xml1
-rw-r--r--src/main/java/org/apache/bcel/generic/IINC.java7
2 files changed, 7 insertions, 1 deletions
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 7cc9f6a8..083c7093 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -63,6 +63,7 @@ The <action> type attribute can be add,update,fix,remove.
<body>
<release version="6.1" date="tba" description="tba">
+ <action issue="BCEL-287" type="fix" dev="britter" due-to="Mark Roberts">IINC does not handle -128 properly</action>
<action issue="BCEL-283" type="fix" dev="britter" due-to="Mark Roberts">Support for StackMap should be different from StackMapTable</action>
<action issue="BCEL-289" type="fix" dev="kinow">Crash when parsing constructor of inner classes with parameters annotated</action>
<action issue="BCEL-276" type="fix" dev="britter" due-to="Sam Yoon">LocalVariableTypeTable is not updated.</action>
diff --git a/src/main/java/org/apache/bcel/generic/IINC.java b/src/main/java/org/apache/bcel/generic/IINC.java
index 7efbb8ec..c01e8b1a 100644
--- a/src/main/java/org/apache/bcel/generic/IINC.java
+++ b/src/main/java/org/apache/bcel/generic/IINC.java
@@ -75,7 +75,12 @@ public class IINC extends LocalVariableInstruction {
private void setWide() {
- wide = (super.getIndex() > org.apache.bcel.Const.MAX_BYTE) || (Math.abs(c) > Byte.MAX_VALUE);
+ wide = (super.getIndex() > org.apache.bcel.Const.MAX_BYTE);
+ if (c > 0) {
+ wide = wide || (c > Byte.MAX_VALUE);
+ } else {
+ wide = wide || (c < Byte.MIN_VALUE);
+ }
if (wide) {
super.setLength(6); // wide byte included
} else {