From: Narayan Kamath Date: Tue, 9 Feb 2016 13:11:09 +0000 (+0000) Subject: openjdkjvm: Don't leak the results of JVM_RawMonitorCreate. X-Git-Tag: android-x86-7.1-r1~408^2~7^2~55^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=6c37e9adf7afc547a0fdf4db29249f6982845162;p=android-x86%2Fart.git openjdkjvm: Don't leak the results of JVM_RawMonitorCreate. bug: 27050501 Change-Id: Ib0db3e5a1ec412de07455f09fe88b3102b347e46 --- 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) {