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

Commit 59483ea2 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

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

Change-Id: Ia102b1128a608fb1af874d23dca28f3ed256b530
parents 64837faf 689a8b4b
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;