]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: agent: expand addrs upfront
authorJán Tomko <jtomko@redhat.com>
Mon, 5 Oct 2020 19:26:01 +0000 (21:26 +0200)
committerJán Tomko <jtomko@redhat.com>
Thu, 8 Oct 2020 09:16:08 +0000 (11:16 +0200)
qemuAgentGetInterfaceOneAddress returns exactly one address
for every iteration of the loop (and we error out if not).

Instead of expanding the addrs by one on every iteration,
do it upfront since we know how many times the loop will
execute.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
Reviewed-by: Neal Gompa <ngompa13@gmail.com>
src/qemu/qemu_agent.c

index c6878c85906f5b4cb4a223b87b30c09fac0c9c1b..0394a725182807616dac63775c28b98700ced0d0 100644 (file)
@@ -2213,20 +2213,18 @@ qemuAgentGetInterfaces(qemuAgentPtr agent,
         /* If current iface already exists, continue with the count */
         addrs_count = iface->naddrs;
 
+        if (VIR_EXPAND_N(iface->addrs, addrs_count,
+                         virJSONValueArraySize(ip_addr_arr))  < 0)
+            goto error;
+
         for (j = 0; j < virJSONValueArraySize(ip_addr_arr); j++) {
             virJSONValuePtr ip_addr_obj = virJSONValueArrayGet(ip_addr_arr, j);
-            virDomainIPAddressPtr ip_addr;
-
-            if (VIR_EXPAND_N(iface->addrs, addrs_count, 1)  < 0)
-                goto error;
-
-            ip_addr = &iface->addrs[addrs_count - 1];
+            virDomainIPAddressPtr ip_addr = iface->addrs + iface->naddrs;
+            iface->naddrs++;
 
             if (qemuAgentGetInterfaceOneAddress(ip_addr, ip_addr_obj, name) < 0)
                 goto error;
         }
-
-        iface->naddrs = addrs_count;
     }
 
     *ifaces = g_steal_pointer(&ifaces_ret);