diff --git a/jode/jode/decompiler/LocalVariableRangeList.java b/jode/jode/decompiler/LocalVariableRangeList.java index 42703c1..253fe40 100644 --- a/jode/jode/decompiler/LocalVariableRangeList.java +++ b/jode/jode/decompiler/LocalVariableRangeList.java @@ -62,9 +62,9 @@ public class LocalVariableRangeList implements LocalVariable { private LocalInfo find(int addr) { MyLocalInfo li = list; - while (li != null && addr > li.start+li.length) + while (li != null && addr >= li.start+li.length) li = li.next; - if (li == null || li.start > addr) { + if (li == null || li.start > addr+2/*XXX*/) { LocalInfo temp = new LocalInfo(slot); return temp; } diff --git a/jode/jode/decompiler/LocalVariableTable.java b/jode/jode/decompiler/LocalVariableTable.java index 93d8905..3438c5f 100644 --- a/jode/jode/decompiler/LocalVariableTable.java +++ b/jode/jode/decompiler/LocalVariableTable.java @@ -43,7 +43,7 @@ public class LocalVariableTable { { int count = stream.readUnsignedShort(); for (int i=0; i" + string; -// else -// return bottomType.typeString(string, flag1, flag2); + else if (bottomType != null) + return bottomType.typeString(string, flag1, flag2); + else + return tObject.typeString(string, flag1, flag2); } // public String toString() diff --git a/jode/jode/type/MyType.java b/jode/jode/type/MyType.java index 6a376bd..07ac1d6 100644 --- a/jode/jode/type/MyType.java +++ b/jode/jode/type/MyType.java @@ -59,8 +59,11 @@ public class MyType extends Type { public static Type tSuperType(Type type) { int typeCode = type.getTypeCode(); - if (typeCode == 9 || typeCode == 10 || typeCode == 103) + if (typeCode == 9 || typeCode == 10) return new ClassRangeType(tObject, type); + else if (typeCode == 103) + return (((ClassRangeType)type).topType == null + ? tUnknown : new ClassRangeType(tObject, null)); else return type; }