darwin: release device parent reference when re-enumerating device
authorNathan Hjelm <hjelmn@google.com>
Sat, 12 Jun 2021 04:27:19 +0000 (22:27 -0600)
committerNathan Hjelm <hjelmn@google.com>
Sat, 12 Jun 2021 04:27:19 +0000 (22:27 -0600)
commite3dda19b31ee974fd749d55bc97d8bfc0e976bb4
tree31abfc36cc895daab1e244f91b8fe11955e52e9f
parent5360a17ce7a596b0fb976a1be6a2b51753e87824
darwin: release device parent reference when re-enumerating device

This commit fixes a dangling device reference that can occur when a device is
being re-enumerated. The problem is the code was unconditionally re-caching the
parent device which then takes a reference on the parent device. If the field
was already populated this reference was not needed. To ensure the code works
even if the parent device also changes during the re-enumeration the code
release the parent reference and grabs a fresh reference.

Fixes #924

Signed-off-by: Nathan Hjelm <hjelmn@google.com>
libusb/os/darwin_usb.c
libusb/version_nano.h