Replaced manual resource management of libusb_config_descriptor resource, with std::unique_ptr
This commit is contained in:
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user