Fix repeated calls to DataBuffer.write(CharSequence, Charset)

Prior to this commit, repeated calls to `DataBuffer.write(CharSequence,
Charset)` would not write the given chars to the expected position in
the original buffer.

This commit fixes that by writing to the `outBuffer.position()`, offset
by the current `DataBuffer.writePosition()`.

Fixes gh-22484
This commit is contained in:
Andrew Tulloch
2019-02-27 13:28:03 +00:00
committed by Brian Clozel
parent 2137cc4422
commit 090aceb3ad
2 changed files with 23 additions and 2 deletions

View File

@@ -264,13 +264,13 @@ public interface DataBuffer {
break;
}
if (cr.isOverflow()) {
writePosition(outBuffer.position());
writePosition(writePosition() + outBuffer.position());
int maximumSize = (int) (inBuffer.remaining() * charsetEncoder.maxBytesPerChar());
ensureCapacity(maximumSize);
outBuffer = asByteBuffer(writePosition(), writableByteCount());
}
}
writePosition(outBuffer.position());
writePosition(writePosition() + outBuffer.position());
}
return this;
}