machinectl: use strdup_to() and move cleanup out of the loop
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 19 Mar 2024 22:34:01 +0000 (23:34 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 20 Mar 2024 14:18:21 +0000 (15:18 +0100)
It doesn't matter much, but it seems nicer to call va_end() just
once.

src/machine/machinectl.c

index bab3719a495b8bc97b94137fe512a237982ce3a6..32a60e388fc561f48461d8b8956db199e098b1df 100644 (file)
@@ -159,24 +159,22 @@ static int call_get_os_release(sd_bus *bus, const char *method, const char *name
         if (r < 0)
                 return bus_log_parse_error(r);
 
+        r = 0;
         va_start(ap, query);
         for (count = 0; count < awaited_args; count++) {
-                char *val, **out;
+                char **out;
 
                 out = va_arg(ap, char **);
                 assert(out);
                 if (query_res[count]) {
-                        val = strdup(query_res[count]);
-                        if (!val) {
-                                va_end(ap);
-                                return -ENOMEM;
-                        }
-                        *out = val;
+                        r = strdup_to(out, query_res[count]);
+                        if (r < 0)
+                                break;
                 }
         }
         va_end(ap);
 
-        return 0;
+        return r;
 }
 
 static int call_get_addresses(