Fix: ExtendableBuffer
Bug: 6669677 Change-Id: I73142fdabac1cbd4128b83c3b26b642b4b4f4da7main
parent
fdcd67ba15
commit
4e79fb24ab
|
@ -66,16 +66,17 @@ bool BufferWithExtendableBuffer::writeCodePointsAndAdvancePosition(const int *co
|
||||||
|
|
||||||
bool BufferWithExtendableBuffer::checkAndPrepareWriting(const int pos, const int size) {
|
bool BufferWithExtendableBuffer::checkAndPrepareWriting(const int pos, const int size) {
|
||||||
if (isInAdditionalBuffer(pos)) {
|
if (isInAdditionalBuffer(pos)) {
|
||||||
if (pos == mUsedAdditionalBufferSize) {
|
const int tailPosition = getTailPosition();
|
||||||
|
if (pos == tailPosition) {
|
||||||
// Append data to the tail.
|
// Append data to the tail.
|
||||||
if (pos + size > static_cast<int>(mAdditionalBuffer.size())) {
|
if (pos + size > static_cast<int>(mAdditionalBuffer.size()) + mOriginalBufferSize) {
|
||||||
// Need to extend buffer.
|
// Need to extend buffer.
|
||||||
if (!extendBuffer()) {
|
if (!extendBuffer()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mUsedAdditionalBufferSize += size;
|
mUsedAdditionalBufferSize += size;
|
||||||
} else if (pos + size >= mUsedAdditionalBufferSize) {
|
} else if (pos + size >= tailPosition) {
|
||||||
// The access will beyond the tail of used region.
|
// The access will beyond the tail of used region.
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue