mirror of
https://github.com/revanced/Apktool.git
synced 2024-12-12 05:47:46 +01:00
Re-doing some of the code. Need to learn how to check for already escaped characters without re-writing a whole class.
This commit is contained in:
parent
97451619b8
commit
f0c96c6ea5
@ -52,7 +52,7 @@ public abstract class ResScalarValue extends ResValue
|
|||||||
if (mRawValue != null) {
|
if (mRawValue != null) {
|
||||||
return mRawValue;
|
return mRawValue;
|
||||||
}
|
}
|
||||||
return encodeAsResXmlValueExt();
|
return encodeAsResXml();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String encodeAsResXmlValueExt() throws AndrolibException {
|
public String encodeAsResXmlValueExt() throws AndrolibException {
|
||||||
|
@ -156,24 +156,37 @@ public final class ResXmlEncoders {
|
|||||||
return out.toString();
|
return out.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<Integer> findNonPositionalSubstitutions(String str,
|
/**
|
||||||
|
* It searches for "%", but not "%%" nor "%(\d)+\$"
|
||||||
|
*/
|
||||||
|
private static List<Integer> findNonPositionalSubstitutions(String str,
|
||||||
int max) {
|
int max) {
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
|
int pos2 = 0;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
int length = str.length();
|
int length = str.length();
|
||||||
List<Integer> ret = new ArrayList<Integer>();
|
List<Integer> ret = new ArrayList<Integer>();
|
||||||
while((pos = str.indexOf('%', pos)) != -1) {
|
while((pos2 = (pos = str.indexOf('%', pos2)) + 1) != 0) {
|
||||||
if (pos + 1 == length) {
|
if (pos2 == length) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
char c = str.charAt(pos + 1);
|
char c = str.charAt(pos2++);
|
||||||
if (c >= 'a' && c <= 'z') {
|
if (c == '%') {
|
||||||
ret.add(pos);
|
continue;
|
||||||
if (max != -1 && ++count >= max) {
|
}
|
||||||
break;
|
if (c >= '0' && c <= '9' && pos2 < length) {
|
||||||
|
do {
|
||||||
|
c = str.charAt(pos2++);
|
||||||
|
} while (c >= '0' && c <= '9' && pos2 < length);
|
||||||
|
if (c == '$') {
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pos += 2;
|
|
||||||
|
ret.add(pos);
|
||||||
|
if (max != -1 && ++count >= max) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user