diff --git a/d2j-smali/src/main/java/com/googlecode/d2j/smali/BaksmaliDumper.java b/d2j-smali/src/main/java/com/googlecode/d2j/smali/BaksmaliDumper.java index d997227e2..0040af6fa 100644 --- a/d2j-smali/src/main/java/com/googlecode/d2j/smali/BaksmaliDumper.java +++ b/d2j-smali/src/main/java/com/googlecode/d2j/smali/BaksmaliDumper.java @@ -92,17 +92,25 @@ static String escapeType(String id) { return escapeBuff.toString(); } + static String escapeId(String id) { + StringBuilder escapeBuff = new StringBuilder(); + escapeId0(escapeBuff, id); + return escapeBuff.toString(); + } + static void escapeId0(StringBuilder sb, String id) { for (int i = 0; i < id.length(); ++i) { char c = id.charAt(i); - escape1(sb, c); + escapeId1(sb, c); } } - static String escapeId(String id) { - StringBuilder escapeBuff = new StringBuilder(); - escapeId0(escapeBuff, id); - return escapeBuff.toString(); + static void escapeId1(final StringBuilder buf, char c) { + if (c == '\\' || c == '/' || c == '.') { + buf.append(String.format("\\u%04x", (int) c)); + } else { + escape1(buf, c); + } } static void escape1(final StringBuilder buf, char c) {