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

Commit 7fd6c5c6 authored by Mark Salyzyn's avatar Mark Salyzyn
Browse files

logd: prune maintain per-id watermark (part deux)

iterator corruption as we allow mLast to slip through the FIFO

Bug: 23685592
Bug: 26646087
Change-Id: Ifcbaecf390ee47b195c3d823d080c66c15db4530
parent d0009911
Loading
Loading
Loading
Loading
+14 −6
Original line number Diff line number Diff line
@@ -332,13 +332,21 @@ LogBufferElementCollection::iterator LogBuffer::erase(
        }
    }

    bool setLast = mLastSet[id] && (it == mLast[id]);
    bool setLast[LOG_ID_MAX];
    bool doSetLast = false;
    log_id_for_each(i) {
        doSetLast |= setLast[i] = mLastSet[i] && (it == mLast[i]);
    }
    it = mLogElements.erase(it);
    if (setLast) {
    if (doSetLast) {
        log_id_for_each(i) {
            if (setLast[i]) {
                if (it == mLogElements.end()) { // unlikely
            mLastSet[id] = false;
                    mLastSet[i] = false;
                } else {
            mLast[id] = it;
                    mLast[i] = it;
                }
            }
        }
    }
    if (coalesce) {