adb: fix IOKit handle leaks on OS X.
Bug: https://code.google.com/p/android/issues/detail?id=219085 Test: Removed sleep in RunLoopThread, compared before/after this patch Change-Id: Ia65bbedfb7d47bdb02bdfb69778784e5e855900b
This commit is contained in:
parent
d7f60fd871
commit
b6a2f59515
|
@ -177,6 +177,7 @@ AndroidInterfaceAdded(io_iterator_t iterator)
|
|||
kr = (*iface)->GetDevice(iface, &usbDevice);
|
||||
if (kIOReturnSuccess != kr || !usbDevice) {
|
||||
LOG(ERROR) << "Couldn't grab device from interface (" << std::hex << kr << ")";
|
||||
(*iface)->Release(iface);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -191,6 +192,7 @@ AndroidInterfaceAdded(io_iterator_t iterator)
|
|||
(void)IOObjectRelease(usbDevice);
|
||||
if ((kIOReturnSuccess != kr) || (!plugInInterface)) {
|
||||
LOG(ERROR) << "Unable to create a device plug-in (" << std::hex << kr << ")";
|
||||
(*iface)->Release(iface);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -200,6 +202,7 @@ AndroidInterfaceAdded(io_iterator_t iterator)
|
|||
(*plugInInterface)->Release(plugInInterface);
|
||||
if (result || !dev) {
|
||||
LOG(ERROR) << "Couldn't create a device interface (" << std::hex << result << ")";
|
||||
(*iface)->Release(iface);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -211,6 +214,8 @@ AndroidInterfaceAdded(io_iterator_t iterator)
|
|||
if (kr == KERN_SUCCESS) {
|
||||
devpath = android::base::StringPrintf("usb:%" PRIu32 "X", locationId);
|
||||
if (IsKnownDevice(devpath)) {
|
||||
(*dev)->Release(dev);
|
||||
(*iface)->Release(iface);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue