From 08d90ec360b43c9febe9638089b1a3815cc62111 Mon Sep 17 00:00:00 2001 From: Ben Gruver Date: Sun, 10 Nov 2013 21:34:16 -0800 Subject: [PATCH] Don't write out 0-length type lists --- .../writer/builder/BuilderTypeListPool.java | 4 ++-- .../jf/dexlib2/writer/pool/TypeListPool.java | 24 ++++++++++++++----- 2 files changed, 20 insertions(+), 8 deletions(-) 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;