Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 3 additions & 7 deletions libusb/os/windows_winusb.c
Original file line number Diff line number Diff line change
Expand Up @@ -520,6 +520,9 @@ static int windows_assign_endpoints(struct libusb_device_handle *dev_handle, uin
const struct libusb_interface_descriptor *if_desc;
int i, r;

safe_free(priv->usb_interface[iface].endpoint);
priv->usb_interface[iface].nb_endpoints = 0;

r = libusb_get_active_config_descriptor(dev_handle->dev, &conf_desc);
if (r != LIBUSB_SUCCESS) {
usbi_warn(HANDLE_CTX(dev_handle), "could not read config descriptor: error %d", r);
Expand All @@ -532,7 +535,6 @@ static int windows_assign_endpoints(struct libusb_device_handle *dev_handle, uin
goto end;
}
if_desc = &conf_desc->interface[iface].altsetting[altsetting];
safe_free(priv->usb_interface[iface].endpoint);

if (if_desc->bNumEndpoints == 0) {
usbi_dbg(HANDLE_CTX(dev_handle), "no endpoints found for interface %u", iface);
Expand Down Expand Up @@ -2012,9 +2014,6 @@ static int winusb_claim_interface(struct libusb_device_handle *dev_handle, uint8

CHECK_SUPPORTED_API(priv->apib, claim_interface);

safe_free(priv->usb_interface[iface].endpoint);
priv->usb_interface[iface].nb_endpoints = 0;

r = priv->apib->claim_interface(SUB_API_NOTSET, dev_handle, iface);

if (r == LIBUSB_SUCCESS)
Expand All @@ -2030,9 +2029,6 @@ static int winusb_set_interface_altsetting(struct libusb_device_handle *dev_hand

CHECK_SUPPORTED_API(priv->apib, set_interface_altsetting);

safe_free(priv->usb_interface[iface].endpoint);
priv->usb_interface[iface].nb_endpoints = 0;

r = priv->apib->set_interface_altsetting(SUB_API_NOTSET, dev_handle, iface, altsetting);

if (r == LIBUSB_SUCCESS)
Expand Down
Loading