diff options
-rw-r--r-- | src/core/device.c | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/src/core/device.c b/src/core/device.c index d8567676a7..f8ded6c838 100644 --- a/src/core/device.c +++ b/src/core/device.c @@ -54,8 +54,6 @@ static int device_by_path(Manager *m, const char *path, Unit **ret) { } static void device_unset_sysfs(Device *d) { - Hashmap *devices; - assert(d); if (!d->sysfs) @@ -63,7 +61,7 @@ static void device_unset_sysfs(Device *d) { /* Remove this unit from the chain of devices which share the same sysfs path. */ - devices = UNIT(d)->manager->devices_by_sysfs; + Hashmap *devices = ASSERT_PTR(UNIT(d)->manager->devices_by_sysfs); if (d->same_sysfs_prev) /* If this is not the first unit, then simply remove this unit. */ @@ -84,36 +82,35 @@ static void device_unset_sysfs(Device *d) { } static int device_set_sysfs(Device *d, const char *sysfs) { - _cleanup_free_ char *copy = NULL; - Device *first; + Unit *u = UNIT(ASSERT_PTR(d)); int r; - assert(d); - if (streq_ptr(d->sysfs, sysfs)) return 0; - r = hashmap_ensure_allocated(&UNIT(d)->manager->devices_by_sysfs, &path_hash_ops); + Hashmap **devices = &u->manager->devices_by_sysfs; + + r = hashmap_ensure_allocated(devices, &path_hash_ops); if (r < 0) return r; - copy = strdup(sysfs); + _cleanup_free_ char *copy = strdup(sysfs); if (!copy) return -ENOMEM; device_unset_sysfs(d); - first = hashmap_get(UNIT(d)->manager->devices_by_sysfs, sysfs); + Device *first = hashmap_get(*devices, sysfs); LIST_PREPEND(same_sysfs, first, d); - r = hashmap_replace(UNIT(d)->manager->devices_by_sysfs, copy, first); + r = hashmap_replace(*devices, copy, first); if (r < 0) { LIST_REMOVE(same_sysfs, first, d); return r; } d->sysfs = TAKE_PTR(copy); - unit_add_to_dbus_queue(UNIT(d)); + unit_add_to_dbus_queue(u); return 0; } @@ -350,13 +347,14 @@ static const struct { static int device_found_to_string_many(DeviceFound flags, char **ret) { _cleanup_free_ char *s = NULL; + assert(flags >= 0); assert(ret); - for (size_t i = 0; i < ELEMENTSOF(device_found_map); i++) { - if (!FLAGS_SET(flags, device_found_map[i].flag)) + FOREACH_ELEMENT(i, device_found_map) { + if (!FLAGS_SET(flags, i->flag)) continue; - if (!strextend_with_separator(&s, ",", device_found_map[i].name)) + if (!strextend_with_separator(&s, ",", i->name)) return -ENOMEM; } |