summaryrefslogtreecommitdiff
path: root/libusb/os/haiku_pollfs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libusb/os/haiku_pollfs.cpp')
-rw-r--r--libusb/os/haiku_pollfs.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/libusb/os/haiku_pollfs.cpp b/libusb/os/haiku_pollfs.cpp
index cb28c51..c60b3b5 100644
--- a/libusb/os/haiku_pollfs.cpp
+++ b/libusb/os/haiku_pollfs.cpp
@@ -128,6 +128,11 @@ WatchedEntry::WatchedEntry(BMessenger *messenger, entry_ref *ref)
sscanf(path.Path(), "/dev/bus/usb/%hhu", &dev->bus_number);
dev->device_address = addr - (dev->bus_number + 1);
+ static_assert(sizeof(dev->device_descriptor) == sizeof(usb_device_descriptor),
+ "mismatch between libusb and OS device descriptor sizes");
+ memcpy(&dev->device_descriptor, fDevice->Descriptor(), LIBUSB_DT_DEVICE_SIZE);
+ usbi_localize_device_descriptor(&dev->device_descriptor);
+
if (usbi_sanitize_device(dev) < 0) {
usbi_dbg("device sanitization failed");
libusb_unref_device(dev);