Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9efce640 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Fix logic error in SkipCutBuffer.cpp"

parents bd7f71fa 0766ead6
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -145,7 +145,19 @@ void SkipCutBuffer::write(const char *src, size_t num) {
    if (available < num) {
        int32_t newcapacity = mCapacity + (num - available);
        char * newbuffer = new char[newcapacity];
        memcpy(newbuffer, mCutBuffer, mCapacity);
        if (mWriteHead < mReadHead) {
            // data isn't continuous, need to memcpy twice
            // to move previous data to new buffer.
            size_t copyLeft = mCapacity - mReadHead;
            memcpy(newbuffer, mCutBuffer + mReadHead, copyLeft);
            memcpy(newbuffer + copyLeft, mCutBuffer, mWriteHead);
            mReadHead = 0;
            mWriteHead += copyLeft;
        } else {
            memcpy(newbuffer, mCutBuffer + mReadHead, mWriteHead - mReadHead);
            mWriteHead -= mReadHead;
            mReadHead = 0;
        }
        delete [] mCutBuffer;
        mCapacity = newcapacity;
        mCutBuffer = newbuffer;