From d9cac893f915907000f8bc179ea5e6ab2b5d208d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ryszard=20Wi=C5=9Bniewski?= Date: Sat, 11 May 2013 20:03:03 +0200 Subject: [PATCH] Now one non positional substitution and one positional is detected as "multiple non positional". --- .../java/brut/androlib/res/xml/ResXmlEncoders.java | 12 +++++++----- .../apktool/testapp/res/values-mcc001/strings.xml | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/xml/ResXmlEncoders.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/xml/ResXmlEncoders.java index f714991d..a7531329 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/xml/ResXmlEncoders.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/xml/ResXmlEncoders.java @@ -137,14 +137,16 @@ public final class ResXmlEncoders { } public static boolean hasMultipleNonPositionalSubstitutions(String str) { - return findSubstitutions(str, 2).m1.size() > 1; + Duo, List> tuple = findSubstitutions(str, 2); + return ! tuple.m1.isEmpty() && tuple.m1.size() + tuple.m2.size() > 1; } public static String enumerateNonPositionalSubstitutionsIfRequired(String str) { - List subs = findSubstitutions(str, -1).m1; - if (subs.size() < 2) { - return str; - } + Duo, List> tuple = findSubstitutions(str, 2); + if (tuple.m1.isEmpty() || tuple.m1.size() + tuple.m2.size() < 2) { + return str; + } + List subs = tuple.m1; StringBuilder out = new StringBuilder(); int pos = 0; diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc001/strings.xml b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc001/strings.xml index cb0e70a2..fd10d7eb 100644 --- a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc001/strings.xml +++ b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc001/strings.xml @@ -24,4 +24,5 @@ bar" %02d foo %01d %d foo %1 %1% foo %2% + foo %s bar %2$s baz