diff --git a/jadx-commons/jadx-zip/src/main/java/jadx/zip/ZipContent.java b/jadx-commons/jadx-zip/src/main/java/jadx/zip/ZipContent.java index 986fe13c8..02e6967b4 100644 --- a/jadx-commons/jadx-zip/src/main/java/jadx/zip/ZipContent.java +++ b/jadx-commons/jadx-zip/src/main/java/jadx/zip/ZipContent.java @@ -2,14 +2,17 @@ package jadx.zip; import java.io.Closeable; import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class ZipContent implements Closeable { + private static final Logger LOG = LoggerFactory.getLogger(ZipContent.class); + private final IZipParser zipParser; private final List entries; private final Map entriesMap; @@ -17,7 +20,19 @@ public class ZipContent implements Closeable { public ZipContent(IZipParser zipParser, List entries) { this.zipParser = zipParser; this.entries = entries; - this.entriesMap = entries.stream().collect(Collectors.toMap(IZipEntry::getName, Function.identity())); + this.entriesMap = buildNameMap(zipParser, entries); + } + + private static Map buildNameMap(IZipParser zipParser, List entries) { + Map map = new HashMap<>(entries.size()); + for (IZipEntry entry : entries) { + String name = entry.getName(); + IZipEntry prevEntry = map.put(name, entry); + if (prevEntry != null) { + LOG.warn("Found duplicate entry: {} in {}", name, zipParser); + } + } + return map; } public List getEntries() {