diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderTypeListPool.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderTypeListPool.java index f8818f7e..7b189fdb 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderTypeListPool.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderTypeListPool.java @@ -55,7 +55,7 @@ class BuilderTypeListPool implements TypeListSection types) { - if (types == null) { + if (types == null || types.size() == 0) { return BuilderTypeList.EMPTY; } @@ -76,7 +76,7 @@ class BuilderTypeListPool implements TypeListSection types) { - Key> key = new Key>(types); - Integer prev = internedItems.put(key, 0); - if (prev == null) { - for (CharSequence type: types) { - typePool.intern(type); + if (types.size() > 0) { + Key> key = new Key>(types); + Integer prev = internedItems.put(key, 0); + if (prev == null) { + for (CharSequence type: types) { + typePool.intern(type); + } } } } @@ -65,6 +69,14 @@ public class TypeListPool extends BaseNullableOffsetPool> key) { + if (key == null || key.types.size() == 0) { + return DexWriter.NO_OFFSET; + } else { + return super.getNullableItemOffset(key); + } + } + public static class Key> implements Comparable>> { @Nonnull TypeCollection types;