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

Commit 023c0fc0 authored by Leon Scroggins III's avatar Leon Scroggins III
Browse files

Speculative fix for createBitmap crash

Bug: 112551574
Test: Infeasible

Check for a null Bitmap before attempting to dereference it.

Change-Id: I250059e87540f005017abfdd9071f2fec86c1610
parent 2c135398
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -507,9 +507,18 @@ static jobject doDecode(JNIEnv* env, std::unique_ptr<SkStreamRewindable> stream,
                ninePatchChunk, ninePatchInsets, -1);
    }

    // Speculative fix for b/112551574. It doesn't seem like |b| can be null. If it is, print some
    // info that might be helpful to diagnose.
    Bitmap* b = defaultAllocator.getStorageObjAndReset();
    if (!b) {
        ALOGW("defaultAllocator has no storage object!");
        ALOGW("\tjavaBitmap: %s", (javaBitmap == nullptr ? "null" : "present"));
        ALOGW("\tisHardware: %s", (isHardware ? "true" : "false"));
        ALOGW("\twillScale: %s", (willScale ? "true" : "false"));
        return nullptr;
    }
    // now create the java bitmap
    return bitmap::createBitmap(env, defaultAllocator.getStorageObjAndReset(),
            bitmapCreateFlags, ninePatchChunk, ninePatchInsets, -1);
    return bitmap::createBitmap(env, b, bitmapCreateFlags, ninePatchChunk, ninePatchInsets, -1);
}

static jobject nativeDecodeStream(JNIEnv* env, jobject clazz, jobject is, jbyteArray storage,