From 33b07ba96c6a22bdd4a1132c0b15b25873fc0c26 Mon Sep 17 00:00:00 2001
From: Greg Kaiser <gkaiser@google.com>
Date: Wed, 5 Sep 2018 08:04:01 -0700
Subject: [PATCH] UsbTransportSniffer: Defensively use 'final'

UsbTransportSniffer invokes the virtual method Close() within
its destructor.  This usage is fine right now, but if a future
class inherited from UsbTransportSniffer and overrode the Close()
method, then this destructor would not act as expected.

To protect against this, we declare Close() 'final' in
UsbTransportSniffer, and add a comment.

Test: Treehugger
Change-Id: I6182d84e7caf67cb06f37c22c6203ad6d6e57f34
---
 fastboot/fuzzy_fastboot/usb_transport_sniffer.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fastboot/fuzzy_fastboot/usb_transport_sniffer.h b/fastboot/fuzzy_fastboot/usb_transport_sniffer.h
index 89cc00993d..8119aea395 100644
--- a/fastboot/fuzzy_fastboot/usb_transport_sniffer.h
+++ b/fastboot/fuzzy_fastboot/usb_transport_sniffer.h
@@ -72,7 +72,7 @@ class UsbTransportSniffer : public UsbTransport {
 
     virtual ssize_t Read(void* data, size_t len) override;
     virtual ssize_t Write(const void* data, size_t len) override;
-    virtual int Close() override;
+    virtual int Close() override final;  // note usage in destructor
     virtual int Reset() override;
 
     const std::vector<Event> Transfers();
-- 
GitLab