]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virCommandAddArgBuffer: Simplify clearing of @buf
authorPeter Krempa <pkrempa@redhat.com>
Tue, 23 Feb 2021 07:49:42 +0000 (08:49 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 2 Mar 2021 08:50:19 +0000 (09:50 +0100)
Get the buffer contents into a temporary variable with automatic
clearing so that the error branches don't have to reset the buffer.
Additionally handle the NULL string case before assignment.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Laine Stump <laine@redhat.com>
src/util/vircommand.c

index b94ab615d58949247e50c06571e7d15dc48c38bc..f11caf0d6eb4c4b50dcd036aa1763552db5a42b3 100644 (file)
@@ -1550,21 +1550,21 @@ virCommandAddArg(virCommandPtr cmd, const char *val)
 void
 virCommandAddArgBuffer(virCommandPtr cmd, virBufferPtr buf)
 {
-    if (!cmd || cmd->has_error) {
-        virBufferFreeAndReset(buf);
+    g_autofree char *str = virBufferContentAndReset(buf);
+
+    if (!cmd || cmd->has_error)
         return;
-    }
+
+    if (!str)
+        str = g_strdup("");
 
     /* Arg plus trailing NULL. */
     if (VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, 1 + 1) < 0) {
         cmd->has_error = ENOMEM;
-        virBufferFreeAndReset(buf);
         return;
     }
 
-    cmd->args[cmd->nargs] = virBufferContentAndReset(buf);
-    if (!cmd->args[cmd->nargs])
-        cmd->args[cmd->nargs] = g_strdup("");
+    cmd->args[cmd->nargs] = g_steal_pointer(&str);
     cmd->nargs++;
 }