am 21066960: Merge "Fix: ExtendableBuffer"

* commit '210669605a544d5384d1f88af96b56c5fc57652d':
  Fix: ExtendableBuffer
main
Keisuke Kuroyanagi 2013-09-09 23:47:23 -07:00 committed by Android Git Automerger
commit 0f2fe443a1
1 changed files with 4 additions and 3 deletions

View File

@ -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;
} }