From c949f686413deb9b711696d53d8064669a1475d0 Mon Sep 17 00:00:00 2001 From: Jakub Pawlowski Date: Mon, 23 May 2016 11:05:32 -0700 Subject: Fix LocalRef leakage in get_gatt_db Bug: 28878699 Change-Id: I81929d9f802d4f50eb7eb60d54ceca6ff19bb651 --- jni/com_android_bluetooth_gatt.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'jni') diff --git a/jni/com_android_bluetooth_gatt.cpp b/jni/com_android_bluetooth_gatt.cpp index 582d63cc6..c9f28a750 100644 --- a/jni/com_android_bluetooth_gatt.cpp +++ b/jni/com_android_bluetooth_gatt.cpp @@ -566,6 +566,7 @@ void btgattc_get_gatt_db_cb(int conn_id, btgatt_db_element_t *db, int count) jclass arrayListclazz = sCallbackEnv->FindClass("java/util/ArrayList"); jobject array = sCallbackEnv->NewObject(arrayListclazz, sCallbackEnv->GetMethodID(arrayListclazz, "", "()V")); jmethodID arrayAdd = sCallbackEnv->GetMethodID(arrayListclazz, "add", "(Ljava/lang/Object;)Z"); + sCallbackEnv->DeleteLocalRef(arrayListclazz); jclass uuidClazz = sCallbackEnv->FindClass("java/util/UUID"); jmethodID uuidConstructor = sCallbackEnv->GetMethodID(uuidClazz, "", "(JJ)V"); @@ -602,6 +603,9 @@ void btgattc_get_gatt_db_cb(int conn_id, btgatt_db_element_t *db, int count) sCallbackEnv->DeleteLocalRef(element); } + sCallbackEnv->DeleteLocalRef(gattDbElementClazz); + sCallbackEnv->DeleteLocalRef(uuidClazz); + sCallbackEnv->CallVoidMethod(mCallbacksObj, method_onGetGattDb, conn_id, array); sCallbackEnv->DeleteLocalRef(array); -- cgit v1.2.3