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

Commit 6ffb0917 authored by Narayan Kamath's avatar Narayan Kamath
Browse files

Fix error checking in MemoryFile.

mmap returns MAP_FAILED on failures, not 0 (NULL).
Also, convert some C style casts to C++ since they
make intent clearer.

Change-Id: I367993c73e9ee576f11ebe76e530d2c2f27c662d
parent 486544f7
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -47,15 +47,16 @@ static jlong android_os_MemoryFile_mmap(JNIEnv* env, jobject clazz, jobject file
        jint length, jint prot)
{
    int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
    jlong result = (jlong)mmap(NULL, length, prot, MAP_SHARED, fd, 0);
    if (!result)
    void* result = mmap(NULL, length, prot, MAP_SHARED, fd, 0);
    if (result == MAP_FAILED) {
        jniThrowException(env, "java/io/IOException", "mmap failed");
    return result;
    }
    return reinterpret_cast<jlong>(result);
}

static void android_os_MemoryFile_munmap(JNIEnv* env, jobject clazz, jlong addr, jint length)
{
    int result = munmap((void *)addr, length);
    int result = munmap(reinterpret_cast<void *>(addr), length);
    if (result < 0)
        jniThrowException(env, "java/io/IOException", "munmap failed");
}