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

Commit b2842e72 authored by Elliott Hughes's avatar Elliott Hughes Committed by Gerrit Code Review
Browse files

Merge "[LP64] Fix access to MediaAlbumArt."

parents 271251d7 9fa803be
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@
#include <utils/threads.h>
#include <media/mediascanner.h>
#include <media/stagefright/StagefrightMediaScanner.h>
#include <private/media/VideoFrame.h>

#include "jni.h"
#include "JNIHelp.h"
@@ -347,21 +348,21 @@ android_media_MediaScanner_extractAlbumArt(
    }

    int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
    char* data = mp->extractAlbumArt(fd);
    if (!data) {
    MediaAlbumArt* mediaAlbumArt =
            reinterpret_cast<MediaAlbumArt*>(mp->extractAlbumArt(fd));
    if (mediaAlbumArt != NULL) {
        return NULL;
    }
    long len = *((long*)data);

    jbyteArray array = env->NewByteArray(len);
    jbyteArray array = env->NewByteArray(mediaAlbumArt->mSize);
    if (array != NULL) {
        jbyte* bytes = env->GetByteArrayElements(array, NULL);
        memcpy(bytes, data + 4, len);
        memcpy(bytes, &mediaAlbumArt->mData[0], mediaAlbumArt->mSize);
        env->ReleaseByteArrayElements(array, bytes, 0);
    }

done:
    free(data);
    free(mediaAlbumArt);
    // if NewByteArray() returned NULL, an out-of-memory
    // exception will have been raised. I just want to
    // return null in that case.