diff options
author | Hans de Goede <hdegoede@redhat.com> | 2013-09-06 16:49:26 +0200 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2013-09-06 16:49:26 +0200 |
commit | 733ffffe44ad93bd81feddb0a8072510fd7a8321 (patch) | |
tree | 534d08469a88cc1745c1a3087cfc63609d5c4a40 /libusb/os/linux_usbfs.c | |
parent | 4ffa16f8ef395dbbc48ae0fdd933d296446a9d91 (diff) | |
download | libusb-733ffffe44ad93bd81feddb0a8072510fd7a8321.tar.gz |
Make usbi_get_device_by_session_id return a ref to the found device
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'libusb/os/linux_usbfs.c')
-rw-r--r-- | libusb/os/linux_usbfs.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c index 142fa2b..f8defb8 100644 --- a/libusb/os/linux_usbfs.c +++ b/libusb/os/linux_usbfs.c @@ -1048,9 +1048,11 @@ int linux_enumerate_device(struct libusb_context *ctx, usbi_dbg("busnum %d devaddr %d session_id %ld", busnum, devaddr, session_id); - if (usbi_get_device_by_session_id(ctx, session_id)) { + dev = usbi_get_device_by_session_id(ctx, session_id); + if (dev) { /* device already exists in the context */ usbi_dbg("session_id %ld already exists", session_id); + libusb_unref_device(dev); return LIBUSB_SUCCESS; } @@ -1101,6 +1103,7 @@ void linux_device_disconnected(uint8_t busnum, uint8_t devaddr, const char *sys_ dev = usbi_get_device_by_session_id (ctx, session_id); if (NULL != dev) { usbi_disconnect_device (dev); + libusb_unref_device(dev); } else { usbi_dbg("device not found for session %x", session_id); } |