Skip to content

Commit c13f9c4

Browse files
Brendt Lucasnormanmaurer
authored andcommitted
Fix AsciiString.contentEqualsIgnoreCase
Motivation: Related to issue netty#4564. AsciiString.contentEqualsIgnoreCase fails when comparing two AsciiStrings of the same length Modifications: Compare the values of the first AsciiString to the second AsciiString Result: AsciiString.contentEqualsIgnoreCase works as expected
1 parent 6c0fef1 commit c13f9c4

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

common/src/main/java/io/netty/util/AsciiString.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ public boolean contentEqualsIgnoreCase(CharSequence string) {
530530
if (string.getClass() == AsciiString.class) {
531531
AsciiString rhs = (AsciiString) string;
532532
for (int i = arrayOffset(), j = rhs.arrayOffset(); i < length(); ++i, ++j) {
533-
if (!equalsIgnoreCase(value[i], value[j])) {
533+
if (!equalsIgnoreCase(value[i], rhs.value[j])) {
534534
return false;
535535
}
536536
}

common/src/test/java/io/netty/util/AsciiStringCharacterTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,16 @@ public void testEqualsIgnoreCase() {
240240
assertThat(AsciiString.contentEqualsIgnoreCase(null, "foo"), is(false));
241241
assertThat(AsciiString.contentEqualsIgnoreCase("bar", null), is(false));
242242
assertThat(AsciiString.contentEqualsIgnoreCase("FoO", "fOo"), is(true));
243+
244+
// Test variations (Ascii + String, Ascii + Ascii, String + Ascii)
245+
assertThat(AsciiString.contentEqualsIgnoreCase(new AsciiString("FoO"), "fOo"), is(true));
246+
assertThat(AsciiString.contentEqualsIgnoreCase(new AsciiString("FoO"), new AsciiString("fOo")), is(true));
247+
assertThat(AsciiString.contentEqualsIgnoreCase("FoO", new AsciiString("fOo")), is(true));
248+
249+
// Test variations (Ascii + String, Ascii + Ascii, String + Ascii)
250+
assertThat(AsciiString.contentEqualsIgnoreCase(new AsciiString("FoO"), "bAr"), is(false));
251+
assertThat(AsciiString.contentEqualsIgnoreCase(new AsciiString("FoO"), new AsciiString("bAr")), is(false));
252+
assertThat(AsciiString.contentEqualsIgnoreCase("FoO", new AsciiString("bAr")), is(false));
243253
}
244254

245255
@Test

0 commit comments

Comments
 (0)