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

Commit b984cea7 authored by Marco Nelissen's avatar Marco Nelissen
Browse files

Fix memory leak in MPEG2PSExtractor

It wasn't deleting its tracks and associated buffers.

Bug: 141724191
Test: manual
Change-Id: Ifdc05e6bf89e4770fd600e82d887921ff03c5b93
parent e3cdab3c
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -111,8 +111,10 @@ MPEG2PSExtractor::MPEG2PSExtractor(DataSourceHelper *source)
    AMediaFormat *meta = AMediaFormat_new();
    for (size_t i = mTracks.size(); i > 0;) {
        i--;
        if (mTracks.valueAt(i)->getFormat(meta) != AMEDIA_OK) {
        Track *track = mTracks.valueAt(i);
        if (track->getFormat(meta) != AMEDIA_OK) {
            mTracks.removeItemsAt(i);
            delete track;
        }
    }
    AMediaFormat_delete(meta);
@@ -122,6 +124,10 @@ MPEG2PSExtractor::MPEG2PSExtractor(DataSourceHelper *source)

MPEG2PSExtractor::~MPEG2PSExtractor() {
    delete mDataSource;
    for (size_t i = mTracks.size(); i > 0;) {
        i--;
        delete mTracks.valueAt(i);
    }
}

size_t MPEG2PSExtractor::countTracks() {
@@ -793,7 +799,9 @@ MPEG2PSExtractor::WrappedTrack::~WrappedTrack() {
}

media_status_t MPEG2PSExtractor::WrappedTrack::start() {
    delete mTrack->mBufferGroup;
    mTrack->mBufferGroup = mBufferGroup;
    mBufferGroup = nullptr;
    return mTrack->start();
}