[PATCH 05/33] virCommandAddArgBuffer: Simplify clearing of @buf

Peter Krempa pkrempa at redhat.com
Wed Feb 24 16:16:40 UTC 2021


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 at redhat.com>
---
 src/util/vircommand.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/util/vircommand.c b/src/util/vircommand.c
index b94ab615d5..f11caf0d6e 100644
--- a/src/util/vircommand.c
+++ b/src/util/vircommand.c
@@ -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++;
 }

-- 
2.29.2




More information about the libvir-list mailing list