From 4e79fb24abfc7a13ea5ffe8fa55fc68d99b8f713 Mon Sep 17 00:00:00 2001 From: Keisuke Kuroyanagi Date: Tue, 10 Sep 2013 15:40:11 +0900 Subject: [PATCH] Fix: ExtendableBuffer Bug: 6669677 Change-Id: I73142fdabac1cbd4128b83c3b26b642b4b4f4da7 --- .../dictionary/utils/buffer_with_extendable_buffer.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.cpp b/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.cpp index 6326754c2..dfdaebd18 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.cpp +++ b/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.cpp @@ -66,16 +66,17 @@ bool BufferWithExtendableBuffer::writeCodePointsAndAdvancePosition(const int *co bool BufferWithExtendableBuffer::checkAndPrepareWriting(const int pos, const int size) { if (isInAdditionalBuffer(pos)) { - if (pos == mUsedAdditionalBufferSize) { + const int tailPosition = getTailPosition(); + if (pos == tailPosition) { // Append data to the tail. - if (pos + size > static_cast(mAdditionalBuffer.size())) { + if (pos + size > static_cast(mAdditionalBuffer.size()) + mOriginalBufferSize) { // Need to extend buffer. if (!extendBuffer()) { return false; } } mUsedAdditionalBufferSize += size; - } else if (pos + size >= mUsedAdditionalBufferSize) { + } else if (pos + size >= tailPosition) { // The access will beyond the tail of used region. return false; }