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) {
::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<LibusbDevice> UsbDevice::findMatchingDevices(