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

Commit fb1020de authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix logic error in SkipCutBuffer.cpp" am: 9efce640 am: 689a8b4b am:...

Merge "Fix logic error in SkipCutBuffer.cpp" am: 9efce640 am: 689a8b4b am: 59483ea2 am: 569ed538 am: 7348818e

Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1836241

Change-Id: I5a413552acc93a3ae51cd885539ca44cc24e26d8
parents 6cd5fbde 7348818e
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;