From 60b8c26520922f296a36efb17b8914b6f1e115ea Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Mon, 5 Jun 2017 15:08:13 -0700 Subject: [PATCH] adb: libusb: don't try to delete a usb_handle twice. Previously, we would attempt to delete a usb_handle in both device_disconnected and usb_close. If the one in device_disconnected happened to happen first, usb_close would abort when it failed to find the handle it was supposed to own. Bug: http://b/62020217 Test: unplugging device on darwin Change-Id: I6c6bf61bf89a4d9a23458c00b457080d3d6cc744 --- adb/client/usb_libusb.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/adb/client/usb_libusb.cpp b/adb/client/usb_libusb.cpp index 7e77b5ede..b2fdc07f0 100644 --- a/adb/client/usb_libusb.cpp +++ b/adb/client/usb_libusb.cpp @@ -422,8 +422,10 @@ static void device_disconnected(libusb_device* device) { if (!it->second->device_handle) { // If the handle is null, we were never able to open the device. unregister_usb_transport(it->second.get()); + usb_handles.erase(it); + } else { + // Closure of the transport will erase the usb_handle. } - usb_handles.erase(it); } }