]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-device-enumerator: introduce device_enumerator_unref_devices() helper function
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 4 Mar 2022 12:09:26 +0000 (21:09 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 22 Mar 2022 02:56:18 +0000 (11:56 +0900)
src/libsystemd/sd-device/device-enumerator.c

index 3f61ed8f885d1852b535e84dd8b3d0a450577a6a..c69da5947c77603bc3a6369da34bbc96f0c85610 100644 (file)
@@ -62,11 +62,24 @@ _public_ int sd_device_enumerator_new(sd_device_enumerator **ret) {
         return 0;
 }
 
+static void device_unref_many(sd_device **devices, size_t n) {
+        assert(devices || n == 0);
+
+        for (size_t i = 0; i < n; i++)
+                sd_device_unref(devices[i]);
+}
+
+static void device_enumerator_unref_devices(sd_device_enumerator *enumerator) {
+        assert(enumerator);
+
+        device_unref_many(enumerator->devices, enumerator->n_devices);
+        enumerator->n_devices = 0;
+}
+
 static sd_device_enumerator *device_enumerator_free(sd_device_enumerator *enumerator) {
         assert(enumerator);
 
-        for (size_t i = 0; i < enumerator->n_devices; i++)
-                sd_device_unref(enumerator->devices[i]);
+        device_enumerator_unref_devices(enumerator);
 
         free(enumerator->devices);
         set_free(enumerator->match_subsystem);
@@ -744,10 +757,7 @@ int device_enumerator_scan_devices(sd_device_enumerator *enumerator) {
             enumerator->type == DEVICE_ENUMERATION_TYPE_DEVICES)
                 return 0;
 
-        for (size_t i = 0; i < enumerator->n_devices; i++)
-                sd_device_unref(enumerator->devices[i]);
-
-        enumerator->n_devices = 0;
+        device_enumerator_unref_devices(enumerator);
 
         if (!set_isempty(enumerator->match_tag)) {
                 k = enumerator_scan_devices_tags(enumerator);
@@ -810,10 +820,7 @@ int device_enumerator_scan_subsystems(sd_device_enumerator *enumerator) {
             enumerator->type == DEVICE_ENUMERATION_TYPE_SUBSYSTEMS)
                 return 0;
 
-        for (size_t i = 0; i < enumerator->n_devices; i++)
-                sd_device_unref(enumerator->devices[i]);
-
-        enumerator->n_devices = 0;
+        device_enumerator_unref_devices(enumerator);
 
         /* modules */
         if (match_subsystem(enumerator, "module")) {