summaryrefslogtreecommitdiffstats
path: root/fastboot/usb_osx.cpp
diff options
context:
space:
mode:
authorDavid Anderson <dvander@google.com>2018-09-04 14:32:54 -0700
committerDavid Anderson <dvander@google.com>2018-09-04 15:01:12 -0700
commit03de645aac4dac3b19900b3d30a29b2d10249ad6 (patch)
tree4a0e3816decf6cf0250684fc1ec6f8d588ce3cc4 /fastboot/usb_osx.cpp
parent33dcdb808b7d60107d527c22815d586b51836836 (diff)
downloadsystem_core-03de645aac4dac3b19900b3d30a29b2d10249ad6.tar.gz
system_core-03de645aac4dac3b19900b3d30a29b2d10249ad6.tar.bz2
system_core-03de645aac4dac3b19900b3d30a29b2d10249ad6.zip
fastbootd: Fix transport ownership.
This change moves Transport ownership back out of FastBootDriver. Callers of set_transport must ensure that the previous transport is destroyed. In addition, deleting a transport now ensures that it is closed. Bug: 78793464 Test: fastboot, fuzzy_fastboot works Change-Id: I8f9ed2f7d5b09fd0820b2677d087a027378f26db
Diffstat (limited to 'fastboot/usb_osx.cpp')
-rw-r--r--fastboot/usb_osx.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/fastboot/usb_osx.cpp b/fastboot/usb_osx.cpp
index 4d48f6e26..ed02c4a28 100644
--- a/fastboot/usb_osx.cpp
+++ b/fastboot/usb_osx.cpp
@@ -70,7 +70,7 @@ class OsxUsbTransport : public UsbTransport {
// A timeout of 0 is blocking
OsxUsbTransport(std::unique_ptr<usb_handle> handle, uint32_t ms_timeout = 0)
: handle_(std::move(handle)), ms_timeout_(ms_timeout) {}
- ~OsxUsbTransport() override = default;
+ ~OsxUsbTransport() override;
ssize_t Read(void* data, size_t len) override;
ssize_t Write(const void* data, size_t len) override;
@@ -471,6 +471,10 @@ UsbTransport* usb_open(ifc_match_func callback, uint32_t timeout_ms) {
return new OsxUsbTransport(std::move(handle), timeout_ms);
}
+OsxUsbTransport::~OsxUsbTransport() {
+ Close();
+}
+
int OsxUsbTransport::Close() {
/* TODO: Something better here? */
return 0;