From: Peter Krempa <pkrempa@redhat.com> Register cleanup function for vshTableRow and use it to simplify cleanup in 'vshTableRowAppend' Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tools/vsh-table.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/tools/vsh-table.c b/tools/vsh-table.c index 20d25eb227..13e9887cba 100644 --- a/tools/vsh-table.c +++ b/tools/vsh-table.c @@ -57,6 +57,7 @@ vshTableRowFree(vshTableRow *row) g_free(row->cells); g_free(row); } +G_DEFINE_AUTOPTR_CLEANUP_FUNC(vshTableRow, vshTableRowFree); void @@ -158,30 +159,26 @@ vshTableNew(const char *arg, ...) int vshTableRowAppend(vshTable *table, const char *arg, ...) { - vshTableRow *row = NULL; + g_autoptr(vshTableRow) row = NULL; size_t ncolumns = table->rows[0]->ncells; va_list ap; - int ret = -1; va_start(ap, arg); row = vshTableRowNew(arg, ap); va_end(ap); if (!row) - goto cleanup; + return -1; if (ncolumns != row->ncells) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Incorrect number of cells in a table row")); - goto cleanup; + return -1; } VIR_APPEND_ELEMENT(table->rows, table->nrows, row); - ret = 0; - cleanup: - vshTableRowFree(row); - return ret; + return 0; } -- 2.53.0