diff --git a/dexlib2/src/main/java/org/jf/dexlib2/base/reference/BaseMethodReference.java b/dexlib2/src/main/java/org/jf/dexlib2/base/reference/BaseMethodReference.java index 3d797bc5..fab116e5 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/base/reference/BaseMethodReference.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/base/reference/BaseMethodReference.java @@ -66,6 +66,6 @@ public abstract class BaseMethodReference implements MethodReference { if (res != 0) return res; res = getReturnType().compareTo(o.getReturnType()); if (res != 0) return res; - return CollectionUtils.compareAsList(getParameters(), o.getParameters()); + return CollectionUtils.compareAsIterable(getParameters(), o.getParameters()); } } diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/FixedSizeList.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/FixedSizeList.java index b2d6873b..b93a1205 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/FixedSizeList.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/FixedSizeList.java @@ -41,7 +41,7 @@ import java.util.AbstractList; public abstract class FixedSizeList extends AbstractList { @Override public T get(int index) { - if (index < 0 || index > size()) { + if (index < 0 || index >= size()) { throw new IndexOutOfBoundsException(); } return readItem(index); diff --git a/util/src/main/java/org/jf/util/CollectionUtils.java b/util/src/main/java/org/jf/util/CollectionUtils.java index 84de6953..23e23dc9 100644 --- a/util/src/main/java/org/jf/util/CollectionUtils.java +++ b/util/src/main/java/org/jf/util/CollectionUtils.java @@ -77,9 +77,18 @@ public class CollectionUtils { @Nonnull Iterable it2) { Iterator elements2 = it2.iterator(); for (T element1: it1) { - int res = comparator.compare(element1, elements2.next()); + T element2; + try { + element2 = elements2.next(); + } catch (NoSuchElementException ex) { + return 1; + } + int res = comparator.compare(element1, element2); if (res != 0) return res; } + if (elements2.hasNext()) { + return -1; + } return 0; } @@ -87,9 +96,18 @@ public class CollectionUtils { @Nonnull Iterable it2) { Iterator elements2 = it2.iterator(); for (T element1: it1) { - int res = element1.compareTo(elements2.next()); + T element2; + try { + element2 = elements2.next(); + } catch (NoSuchElementException ex) { + return 1; + } + int res = element1.compareTo(element2); if (res != 0) return res; } + if (elements2.hasNext()) { + return -1; + } return 0; }