From: Peter Krempa Date: Tue, 23 Feb 2021 07:49:42 +0000 (+0100) Subject: virCommandAddArgBuffer: Simplify clearing of @buf X-Git-Tag: v7.2.0-rc1~296 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e3a792a39b751b891df8f5193b4e7b26bb064cc5;p=thirdparty%2Flibvirt.git virCommandAddArgBuffer: Simplify clearing of @buf 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 Reviewed-by: Laine Stump --- 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++; }