diff --git a/spa/plugins/alsa/alsa-udev.c b/spa/plugins/alsa/alsa-udev.c index 7a12ee62a..51b19c8b6 100644 --- a/spa/plugins/alsa/alsa-udev.c +++ b/spa/plugins/alsa/alsa-udev.c @@ -460,18 +460,17 @@ static int enum_devices(struct impl *this) udev_enumerate_add_match_subsystem(enumerate, "sound"); udev_enumerate_scan_devices(enumerate); - devices = udev_enumerate_get_list_entry(enumerate); - - while (devices) { + for (devices = udev_enumerate_get_list_entry(enumerate); devices; + devices = udev_list_entry_get_next(devices)) { struct udev_device *dev; dev = udev_device_new_from_syspath(this->udev, udev_list_entry_get_name(devices)); + if (dev == NULL) + continue; emit_device(this, ACTION_ADD, true, dev); udev_device_unref(dev); - - devices = udev_list_entry_get_next(devices); } udev_enumerate_unref(enumerate); diff --git a/spa/plugins/v4l2/v4l2-udev.c b/spa/plugins/v4l2/v4l2-udev.c index d48036254..6ff358a27 100644 --- a/spa/plugins/v4l2/v4l2-udev.c +++ b/spa/plugins/v4l2/v4l2-udev.c @@ -338,9 +338,8 @@ static int enum_devices(struct impl *this) udev_enumerate_add_match_subsystem(enumerate, "video4linux"); udev_enumerate_scan_devices(enumerate); - devices = udev_enumerate_get_list_entry(enumerate); - - while (devices) { + for (devices = udev_enumerate_get_list_entry(enumerate); devices; + devices = udev_list_entry_get_next(devices)) { struct udev_device *dev; uint32_t id; @@ -348,14 +347,10 @@ static int enum_devices(struct impl *this) if (dev == NULL) continue; - if ((id = get_device_id(this, dev)) == SPA_ID_INVALID) - continue; - - emit_object_info(this, id, dev); + if ((id = get_device_id(this, dev)) != SPA_ID_INVALID) + emit_object_info(this, id, dev); udev_device_unref(dev); - - devices = udev_list_entry_get_next(devices); } udev_enumerate_unref(enumerate);