]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
logical: Clean up allocation when building regex on the fly
authorJohn Ferlan <jferlan@redhat.com>
Mon, 1 Feb 2016 15:26:02 +0000 (10:26 -0500)
committerJohn Ferlan <jferlan@redhat.com>
Tue, 2 Feb 2016 18:13:05 +0000 (13:13 -0500)
Rather than a loop reallocating space to build the regex, just allocate
it once up front, then if there's more than 1 nextent, append a comma and
another regex_unit string.

Signed-off-by: John Ferlan <jferlan@redhat.com>
src/storage/storage_backend_logical.c

index cd0fec0108612b6b894bacaa9dc223b4b9fad4fc..eb22fd057321a65323a8446864f0e745e4866d11 100644 (file)
@@ -120,12 +120,11 @@ virStorageBackendLogicalParseVolExtents(virStorageVolDefPtr vol,
         goto cleanup;
     }
 
-    if (VIR_STRDUP(regex, regex_unit) < 0)
+    /* Allocate space for 'nextents' regex_unit strings plus a comma for each */
+    if (VIR_ALLOC_N(regex, nextents * (strlen(regex_unit) + 1) + 1) < 0)
         goto cleanup;
-
+    strncat(regex, regex_unit, strlen(regex_unit));
     for (i = 1; i < nextents; i++) {
-        if (VIR_REALLOC_N(regex, strlen(regex) + strlen(regex_unit) + 2) < 0)
-            goto cleanup;
         /* "," is the separator of "devices" field */
         strcat(regex, ",");
         strncat(regex, regex_unit, strlen(regex_unit));