Do not terminate on bad udev device

Skip the device in this case since this could occur if the device is
removed. Fixes #373
This commit is contained in:
pixl 2023-05-10 22:23:10 -04:00
parent be840b333a
commit eb5b3ca481
No known key found for this signature in database
GPG Key ID: 1866C148CD593B6E

View File

@ -135,13 +135,17 @@ void DeviceMonitor::enumerate() {
const char* name = udev_list_entry_get_name(udev_enum_entry); const char* name = udev_list_entry_get_name(udev_enum_entry);
struct udev_device* device = udev_device_new_from_syspath(_udev_context, name); struct udev_device* device = udev_device_new_from_syspath(_udev_context, name);
if (!device) if (device) {
throw std::runtime_error("udev_device_new_from_syspath failed"); const char* dev_node_cstr = udev_device_get_devnode(device);
if (dev_node_cstr) {
const std::string dev_node {dev_node_cstr};
udev_device_unref(device);
std::string dev_node = udev_device_get_devnode(device); _addHandler(dev_node);
udev_device_unref(device); } else {
udev_device_unref(device);
_addHandler(dev_node); }
}
} }
udev_enumerate_unref(udev_enum); udev_enumerate_unref(udev_enum);