From b837dc9d64661e17b8ab3e6fcb11c224cbbba6ea Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Wed, 23 Nov 2016 11:20:52 +0100 Subject: [PATCH] IPP: don't replace unicode carriage return with character (EA-92213) --- .../src/com/siyeh/ipp/unicode/UnicodeUnescapeIntention.java | 4 +++- .../test/com/siyeh/ipp/unicode/unescape/NoCarriageReturn.java | 1 + .../com/siyeh/ipp/unicode/UnicodeUnescapeIntentionTest.java | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 plugins/IntentionPowerPak/test/com/siyeh/ipp/unicode/unescape/NoCarriageReturn.java diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/unicode/UnicodeUnescapeIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/unicode/UnicodeUnescapeIntention.java index 7bd009b720ef..6fba69f56e06 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/unicode/UnicodeUnescapeIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/unicode/UnicodeUnescapeIntention.java @@ -110,7 +110,7 @@ public class UnicodeUnescapeIntention extends Intention { /** * see JLS 3.3. Unicode Escapes */ - private static int indexOfUnicodeEscape(@NotNull String text, int offset) { + static int indexOfUnicodeEscape(@NotNull String text, int offset) { final int length = text.length(); for (int i = 0; i < length; i++) { final char c = text.charAt(i); @@ -143,6 +143,8 @@ public class UnicodeUnescapeIntention extends Intention { StringUtil.isHexDigit(text.charAt(nextChar + 3))) { final int escapeEnd = nextChar + 4; if (offset <= escapeEnd) { + final char d = (char)Integer.parseInt(text.substring(nextChar, nextChar + 4), 16); + if (d == '\r') return -1; // carriage return not allowed return i; } } diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/unicode/unescape/NoCarriageReturn.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/unicode/unescape/NoCarriageReturn.java new file mode 100644 index 000000000000..045e900b2bbb --- /dev/null +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/unicode/unescape/NoCarriageReturn.java @@ -0,0 +1 @@ +// \u000D \ No newline at end of file diff --git a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/unicode/UnicodeUnescapeIntentionTest.java b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/unicode/UnicodeUnescapeIntentionTest.java index bb68178ed414..06209bbf5ac7 100644 --- a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/unicode/UnicodeUnescapeIntentionTest.java +++ b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/unicode/UnicodeUnescapeIntentionTest.java @@ -29,6 +29,7 @@ public class UnicodeUnescapeIntentionTest extends IPPTestCase { public void testSurrogatePairs2() { doTest(); } public void testNoException() { assertIntentionNotAvailable(); } public void testU() { assertIntentionNotAvailable(); } + public void testNoCarriageReturn() { assertIntentionNotAvailable(); } @Override protected String getRelativePath() {