Replaced manual resource management of libusb_config_descriptor resource, with std::unique_ptr

This commit is contained in:
Nav
2022-10-02 13:39:33 +01:00
parent afffaafc86
commit 1bf0e97248

View File

@@ -56,11 +56,11 @@ namespace Bloom::Usb
} }
void UsbDevice::setConfiguration(std::uint8_t configurationIndex) { void UsbDevice::setConfiguration(std::uint8_t configurationIndex) {
::libusb_config_descriptor* configDescriptor = {}; ::libusb_config_descriptor* configDescriptorPtr = {};
auto libusbStatusCode = ::libusb_get_config_descriptor( auto libusbStatusCode = ::libusb_get_config_descriptor(
this->libusbDevice.get(), this->libusbDevice.get(),
configurationIndex, configurationIndex,
&configDescriptor &configDescriptorPtr
); );
if (libusbStatusCode < 0) { 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( libusbStatusCode = ::libusb_set_configuration(
this->libusbDeviceHandle.get(), this->libusbDeviceHandle.get(),
configDescriptor->bConfigurationValue configDescriptor->bConfigurationValue
@@ -80,8 +85,6 @@ namespace Bloom::Usb
"Failed to set USB configuration - error code " + std::to_string(libusbStatusCode) + " returned." "Failed to set USB configuration - error code " + std::to_string(libusbStatusCode) + " returned."
); );
} }
::libusb_free_config_descriptor(configDescriptor);
} }
std::vector<LibusbDevice> UsbDevice::findMatchingDevices( std::vector<LibusbDevice> UsbDevice::findMatchingDevices(