Fix CharArrayBuffer.subSequence(beganIndex,endIndex) to return right result.
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/util/CharArrayBuffer.java b/httpcore5/src/main/java/org/apache/hc/core5/util/CharArrayBuffer.java
index 79eab23..40d2d5a 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/util/CharArrayBuffer.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/util/CharArrayBuffer.java
@@ -485,7 +485,7 @@
if (beginIndex > endIndex) {
throw new IndexOutOfBoundsException("beginIndex: " + beginIndex + " > endIndex: " + endIndex);
}
- return CharBuffer.wrap(this.array, beginIndex, endIndex);
+ return CharBuffer.wrap(this.array, beginIndex, endIndex - beginIndex);
}
@Override
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/util/TestCharArrayBuffer.java b/httpcore5/src/test/java/org/apache/hc/core5/util/TestCharArrayBuffer.java
index 1fe85ee..9776249 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/util/TestCharArrayBuffer.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/util/TestCharArrayBuffer.java
@@ -400,6 +400,16 @@
}
@Test
+ public void testSubSequence() {
+ final CharArrayBuffer buffer = new CharArrayBuffer(16);
+ buffer.append(" name: value ");
+ Assert.assertEquals(5, buffer.indexOf(':'));
+ Assert.assertEquals(" name", buffer.subSequence(0, 5).toString());
+ Assert.assertEquals(" value ",
+ buffer.subSequence(6, buffer.length()).toString());
+ }
+
+ @Test
public void testSubSequenceIndexOfOutBound() {
final CharArrayBuffer buffer = new CharArrayBuffer(16);
buffer.append("stuff");