From 2e5d73a7e4c509b09357e055230cc6c4eb2f291b Mon Sep 17 00:00:00 2001 From: Sergey Toshin Date: Sat, 7 Apr 2018 22:06:53 +0300 Subject: [PATCH] Fixes bug with NS declaration duplicates --- .../main/java/jadx/core/xmlgen/BinaryXMLParser.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java b/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java index 7548a7bb3..04d492ce2 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java @@ -174,7 +174,11 @@ public class BinaryXMLParser extends CommonBinaryParser { int comment = is.readInt32(); int beginPrefix = is.readInt32(); int beginURI = is.readInt32(); - nsMap.computeIfAbsent(getString(beginURI), k -> getString(beginPrefix)); + + String nsValue = getString(beginPrefix); + if(!nsMap.containsValue(nsValue)) { + nsMap.putIfAbsent(getString(beginURI), nsValue); + } namespaceDepth++; } @@ -190,7 +194,11 @@ public class BinaryXMLParser extends CommonBinaryParser { int endPrefix = is.readInt32(); int endURI = is.readInt32(); namespaceDepth--; - nsMap.computeIfAbsent(getString(endURI), k -> getString(endPrefix)); + + String nsValue = getString(endPrefix); + if(!nsMap.containsValue(nsValue)) { + nsMap.putIfAbsent(getString(endURI), nsValue); + } } private void parseCData() throws IOException {