From edbe6015f6ad3f669d162ad7e06ff4202093357d Mon Sep 17 00:00:00 2001 From: Skylot Date: Mon, 23 Nov 2020 16:35:05 +0000 Subject: [PATCH] fix(res): unescape new line symbol in string resources (#1030) --- .../src/main/java/jadx/core/utils/StringUtils.java | 4 ++-- .../java/jadx/tests/functional/StringUtilsTest.java | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/jadx-core/src/main/java/jadx/core/utils/StringUtils.java b/jadx-core/src/main/java/jadx/core/utils/StringUtils.java index 70dde6bb..37127353 100644 --- a/jadx-core/src/main/java/jadx/core/utils/StringUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/StringUtils.java @@ -217,9 +217,9 @@ public class StringUtils { } private static void commonEscapeAndAppend(StringBuilder sb, char c) { - String replace = escapeXmlChar(c); + String replace = escapeWhiteSpaceChar(c); if (replace == null) { - replace = escapeWhiteSpaceChar(c); + replace = escapeXmlChar(c); } if (replace != null) { sb.append(replace); diff --git a/jadx-core/src/test/java/jadx/tests/functional/StringUtilsTest.java b/jadx-core/src/test/java/jadx/tests/functional/StringUtilsTest.java index d97cb390..7989ae54 100644 --- a/jadx-core/src/test/java/jadx/tests/functional/StringUtilsTest.java +++ b/jadx-core/src/test/java/jadx/tests/functional/StringUtilsTest.java @@ -51,4 +51,15 @@ class StringUtilsTest { private void checkCharUnescape(char input, String result) { assertThat(stringUtils.unescapeChar(input), is('\'' + result + '\'')); } + + @Test + public void testResStrValueEscape() { + checkResStrValueEscape("line\nnew line", "line\\nnew line"); + checkResStrValueEscape("can't", "can\\'t"); + checkResStrValueEscape("quote\"end", "quote\\\"end"); + } + + private void checkResStrValueEscape(String input, String result) { + assertThat(StringUtils.escapeResStrValue(input), is(result)); + } } -- GitLab