Author: britter
Date: Wed Aug 30 19:28:20 2017
New Revision: 1806726

URL: http://svn.apache.org/viewvc?rev=1806726&view=rev
Log:
BCEL-287: IINC does not handle -128 properly. Thanks to Mark Roberts

Modified:
    commons/proper/bcel/trunk/src/changes/changes.xml
    commons/proper/bcel/trunk/src/main/java/org/apache/bcel/generic/IINC.java

Modified: commons/proper/bcel/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/changes/changes.xml?rev=1806726&r1=1806725&r2=1806726&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/changes/changes.xml [utf-8] (original)
+++ commons/proper/bcel/trunk/src/changes/changes.xml [utf-8] Wed Aug 30 
19:28:20 2017
@@ -63,6 +63,7 @@ The <action> type attribute can be add,u
 
   <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>

Modified: 
commons/proper/bcel/trunk/src/main/java/org/apache/bcel/generic/IINC.java
URL: 
http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/bcel/generic/IINC.java?rev=1806726&r1=1806725&r2=1806726&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/bcel/generic/IINC.java 
(original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/bcel/generic/IINC.java 
Wed Aug 30 19:28:20 2017
@@ -75,7 +75,12 @@ public class IINC extends LocalVariableI
 
 
     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 {


Reply via email to