Skip to content

Commit

Permalink
Merge pull request #1150 from gustavolaureano/develop
Browse files Browse the repository at this point in the history
Fix for 'libusb_devices were leaked' when no STLINK programmer was found
  • Loading branch information
Nightwalker-87 authored Jun 16, 2021
2 parents e571908 + ca89610 commit 01418b5
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/stlink-lib/usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1203,7 +1203,7 @@ stlink_t *stlink_open_usb(enum ugly_loglevel verbose, enum connect_type connect,
libusb_set_option(slu->libusb_ctx, LIBUSB_OPTION_LOG_LEVEL, ugly_libusb_log_level(verbose));
#endif

libusb_device **list;
libusb_device **list = NULL;
// TODO: We should use ssize_t and use it as a counter if > 0.
// As per libusb API: ssize_t libusb_get_device_list (libusb_context *ctx, libusb_device ***list)
int cnt = (int)libusb_get_device_list(slu->libusb_ctx, &list);
Expand Down Expand Up @@ -1232,7 +1232,7 @@ stlink_t *stlink_open_usb(enum ugly_loglevel verbose, enum connect_type connect,
ILOG("bus %03d dev %03d\n", devBus, devAddr);
}

while (cnt--) {
while (cnt-- > 0) {
struct libusb_device_handle *handle;

libusb_get_device_descriptor(list[cnt], &desc);
Expand Down Expand Up @@ -1273,6 +1273,7 @@ stlink_t *stlink_open_usb(enum ugly_loglevel verbose, enum connect_type connect,

if (cnt < 0) {
WLOG ("Couldn't find %s ST-Link devices\n", (devBus && devAddr) ? "matched" : "any");
libusb_free_device_list(list, 1);
goto on_error;
} else {
ret = libusb_open(list[cnt], &slu->usb_handle);
Expand Down

0 comments on commit 01418b5

Please sign in to comment.