summaryrefslogtreecommitdiffstats
path: root/jni
diff options
context:
space:
mode:
authorJakub Pawlowski <jpawlowski@google.com>2016-05-23 11:05:32 -0700
committerJakub Pawlowski <jpawlowski@google.com>2016-05-23 12:22:46 -0700
commitc949f686413deb9b711696d53d8064669a1475d0 (patch)
treed3ace3cc885130af781f49a0be80e50d216b02ec /jni
parentb3ddda59b674623296238121a6e81c3c1e434756 (diff)
downloadandroid_packages_apps_Bluetooth-c949f686413deb9b711696d53d8064669a1475d0.tar.gz
android_packages_apps_Bluetooth-c949f686413deb9b711696d53d8064669a1475d0.tar.bz2
android_packages_apps_Bluetooth-c949f686413deb9b711696d53d8064669a1475d0.zip
Fix LocalRef leakage in get_gatt_db
Bug: 28878699 Change-Id: I81929d9f802d4f50eb7eb60d54ceca6ff19bb651
Diffstat (limited to 'jni')
-rw-r--r--jni/com_android_bluetooth_gatt.cpp4
1 files changed, 4 insertions, 0 deletions
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, "<init>", "()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, "<init>", "(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);