summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2011-03-28 11:04:29 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2011-03-28 11:04:29 -0700
commit60355780eaa7d80a76a5481ab033606bcfb630fd (patch)
treed39dadbdb2840065fc5f38978f7ea933156bd500
parentab13a89c997fafcfbbb10ed31008893863e39a37 (diff)
parent038c7297c9e2e4b6cdb490ac9fe7102da434278a (diff)
downloadframeworks_base-60355780eaa7d80a76a5481ab033606bcfb630fd.zip
frameworks_base-60355780eaa7d80a76a5481ab033606bcfb630fd.tar.gz
frameworks_base-60355780eaa7d80a76a5481ab033606bcfb630fd.tar.bz2
am 038c7297: am b115807a: am 7661dd8d: Merge "UsbService: Fix JNI local reference leaks in the USB host support code" into honeycomb-mr1
* commit '038c7297c9e2e4b6cdb490ac9fe7102da434278a': UsbService: Fix JNI local reference leaks in the USB host support code
-rw-r--r--services/jni/com_android_server_UsbService.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/services/jni/com_android_server_UsbService.cpp b/services/jni/com_android_server_UsbService.cpp
index 816f76f..6aeede2 100644
--- a/services/jni/com_android_server_UsbService.cpp
+++ b/services/jni/com_android_server_UsbService.cpp
@@ -117,9 +117,14 @@ static int usb_device_added(const char *devname, void* client_data) {
jintArray endpointArray = env->NewIntArray(length);
env->SetIntArrayRegion(endpointArray, 0, length, endpointValues.array());
+ jstring deviceName = env->NewStringUTF(devname);
env->CallVoidMethod(thiz, method_usbDeviceAdded,
- env->NewStringUTF(devname), vendorId, productId, deviceClass,
+ deviceName, vendorId, productId, deviceClass,
deviceSubClass, protocol, interfaceArray, endpointArray);
+
+ env->DeleteLocalRef(interfaceArray);
+ env->DeleteLocalRef(endpointArray);
+ env->DeleteLocalRef(deviceName);
checkAndClearExceptionFromCallback(env, __FUNCTION__);
return 0;
@@ -129,7 +134,9 @@ static int usb_device_removed(const char *devname, void* client_data) {
JNIEnv* env = AndroidRuntime::getJNIEnv();
jobject thiz = (jobject)client_data;
+ jstring deviceName = env->NewStringUTF(devname);
env->CallVoidMethod(thiz, method_usbDeviceRemoved, env->NewStringUTF(devname));
+ env->DeleteLocalRef(deviceName);
checkAndClearExceptionFromCallback(env, __FUNCTION__);
return 0;
}