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

Commit 003a9f67 authored by Stan Iliev's avatar Stan Iliev
Browse files

Fix memory leak in ShaderCache

Fix memory leak in a limited memory situation within
ShaderCache::load().

Bug: 76213660
Test: Passed ShaderCacheTest unit test, ran a build on device.
Change-Id: Ibb6ea8fe167eb22bcbbaffc4cfffac12eda98c42
parent 69196f6f
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -83,10 +83,12 @@ sk_sp<SkData> ShaderCache::load(const SkData& key) {
    int maxTries = 3;
    int maxTries = 3;
    while (valueSize > mObservedBlobValueSize && maxTries > 0) {
    while (valueSize > mObservedBlobValueSize && maxTries > 0) {
        mObservedBlobValueSize = std::min(valueSize, maxValueSize);
        mObservedBlobValueSize = std::min(valueSize, maxValueSize);
        valueBuffer = realloc(valueBuffer, mObservedBlobValueSize);
        void *newValueBuffer = realloc(valueBuffer, mObservedBlobValueSize);
        if (!valueBuffer) {
        if (!newValueBuffer) {
            free(valueBuffer);
            return nullptr;
            return nullptr;
        }
        }
        valueBuffer = newValueBuffer;
        valueSize = bc->get(key.data(), keySize, valueBuffer, mObservedBlobValueSize);
        valueSize = bc->get(key.data(), keySize, valueBuffer, mObservedBlobValueSize);
        maxTries--;
        maxTries--;
    }
    }