commit | 1201bccf857aa2c126f6f568f5255b0aa6027ac2 | [log] [tgz] |
---|---|---|
author | Chris Dickens <christopher.a.dickens@gmail.com> | Thu Mar 26 15:50:04 2020 -0700 |
committer | Chris Dickens <christopher.a.dickens@gmail.com> | Thu Mar 26 15:50:04 2020 -0700 |
tree | d50d2f89312b8341ae5fe5024adffda74f76b3ea | |
parent | 8f7f8560a7ff3db832748bef576bbfd5af527fcf [diff] |
darwin: Explicitly cleanup cached devices during the last libusb_exit() Deferring the cached devices cleanup until the "destructor" function is called makes it appear as though libusb is leaking memory, especially if heap allocations are analyzed after calling libusb_exit(). It can also lead to devices staying on the list longer than they should, as seen by the following sequence of events: libusb_init() <-- init_count is 0, async thread is started devices_scan_devices() <-- enumerates devices libusb_exit() <-- init_count is 0, async thread is stopped [one or more devices disconnected] Because the async thread is stopped when device(s) are disconnected in the above sequence, the disconnection event(s) will not be processed and thus darwin_devices_detached() will not be called and the list will have one or more stale entries until the "destructor" function is finally called. Address both of these shortcomings by cleaning up the cached devices list after stopping the async thread. Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
libusb is a library for USB device access from Linux, macOS, Windows, OpenBSD/NetBSD, Haiku and Solaris userspace. It is written in C (Haiku backend in C++) and licensed under the GNU Lesser General Public License version 2.1 or, at your option, any later version (see COPYING).
libusb is abstracted internally in such a way that it can hopefully be ported to other operating systems. Please see the PORTING file for more information.
libusb homepage: http://libusb.info/
Developers will wish to consult the API documentation: http://api.libusb.info
Use the mailing list for questions, comments, etc: http://mailing-list.libusb.info
(Please use the mailing list rather than mailing developers directly)