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

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

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

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

Change-Id: Icf94bce52caa2572e84ac89429e446ea0d81581e
parents 39aa749a 9efce640
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;