From 6c37e9adf7afc547a0fdf4db29249f6982845162 Mon Sep 17 00:00:00 2001 From: Narayan Kamath Date: Tue, 9 Feb 2016 13:11:09 +0000 Subject: [PATCH] openjdkjvm: Don't leak the results of JVM_RawMonitorCreate. bug: 27050501 Change-Id: Ib0db3e5a1ec412de07455f09fe88b3102b347e46 --- runtime/openjdkjvm/OpenjdkJvm.cc | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/runtime/openjdkjvm/OpenjdkJvm.cc b/runtime/openjdkjvm/OpenjdkJvm.cc index 487b7d8a9..725067a35 100644 --- a/runtime/openjdkjvm/OpenjdkJvm.cc +++ b/runtime/openjdkjvm/OpenjdkJvm.cc @@ -124,14 +124,18 @@ JNIEXPORT jlong JVM_Lseek(jint fd, jlong offset, jint whence) { * mutexes. They're used by ZipFile. */ JNIEXPORT void* JVM_RawMonitorCreate(void) { - pthread_mutex_t* newMutex = + pthread_mutex_t* mutex = reinterpret_cast(malloc(sizeof(pthread_mutex_t))); - pthread_mutex_init(newMutex, NULL); - return newMutex; + CHECK(mutex != nullptr); + CHECK_PTHREAD_CALL(pthread_mutex_init, (mutex, nullptr), "JVM_RawMonitorCreate"); + return mutex; } JNIEXPORT void JVM_RawMonitorDestroy(void* mon) { - pthread_mutex_destroy(reinterpret_cast(mon)); + CHECK_PTHREAD_CALL(pthread_mutex_destroy, + (reinterpret_cast(mon)), + "JVM_RawMonitorDestroy"); + free(mon); } JNIEXPORT jint JVM_RawMonitorEnter(void* mon) { @@ -139,7 +143,9 @@ JNIEXPORT jint JVM_RawMonitorEnter(void* mon) { } JNIEXPORT void JVM_RawMonitorExit(void* mon) { - pthread_mutex_unlock(reinterpret_cast(mon)); + CHECK_PTHREAD_CALL(pthread_mutex_unlock, + (reinterpret_cast(mon)), + "JVM_RawMonitorExit"); } JNIEXPORT char* JVM_NativePath(char* path) { -- 2.11.0