diff --git a/libusb/os/windows_winusb.c b/libusb/os/windows_winusb.c index f603126f1..c0799966e 100644 --- a/libusb/os/windows_winusb.c +++ b/libusb/os/windows_winusb.c @@ -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); @@ -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); @@ -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) @@ -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)