From 1bf0e97248a113235976e8503edd409603934fe1 Mon Sep 17 00:00:00 2001 From: Nav Date: Sun, 2 Oct 2022 13:39:33 +0100 Subject: [PATCH] Replaced manual resource management of libusb_config_descriptor resource, with std::unique_ptr --- src/DebugToolDrivers/USB/UsbDevice.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/DebugToolDrivers/USB/UsbDevice.cpp b/src/DebugToolDrivers/USB/UsbDevice.cpp index 513ea785..f3addb8f 100644 --- a/src/DebugToolDrivers/USB/UsbDevice.cpp +++ b/src/DebugToolDrivers/USB/UsbDevice.cpp @@ -56,11 +56,11 @@ namespace Bloom::Usb } void UsbDevice::setConfiguration(std::uint8_t configurationIndex) { - ::libusb_config_descriptor* configDescriptor = {}; + ::libusb_config_descriptor* configDescriptorPtr = {}; auto libusbStatusCode = ::libusb_get_config_descriptor( this->libusbDevice.get(), configurationIndex, - &configDescriptor + &configDescriptorPtr ); if (libusbStatusCode < 0) { @@ -70,6 +70,11 @@ namespace Bloom::Usb ); } + const auto configDescriptor = std::unique_ptr<::libusb_config_descriptor, decltype(&::libusb_free_config_descriptor)>( + configDescriptorPtr, + ::libusb_free_config_descriptor + ); + libusbStatusCode = ::libusb_set_configuration( this->libusbDeviceHandle.get(), configDescriptor->bConfigurationValue @@ -80,8 +85,6 @@ namespace Bloom::Usb "Failed to set USB configuration - error code " + std::to_string(libusbStatusCode) + " returned." ); } - - ::libusb_free_config_descriptor(configDescriptor); } std::vector UsbDevice::findMatchingDevices(