[PATCH 4/9] vshReadlineParse: Use g_auto*()

Michal Privoznik mprivozn at redhat.com
Tue Jan 26 13:27:08 UTC 2021


Instead of freeing @partial and @buf explicitly, we can use
g_auto*() to do that automatically.

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
---
 tools/vsh.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/tools/vsh.c b/tools/vsh.c
index ba6299aae4..9a7ca6776b 100644
--- a/tools/vsh.c
+++ b/tools/vsh.c
@@ -739,6 +739,8 @@ vshCommandFree(vshCmd *cmd)
     }
 }
 
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(vshCmd, vshCommandFree);
+
 /**
  * vshCommandOpt:
  * @cmd: parsed command line to search
@@ -2704,10 +2706,10 @@ vshReadlineParse(const char *text, int state)
      * initialize those static variables above. On subsequent
      * calls @state is non zero. */
     if (!state) {
-        vshCmd *partial = NULL;
+        g_autoptr(vshCmd) partial = NULL;
         const vshCmdDef *cmd = NULL;
         const vshCmdOptDef *opt = NULL;
-        char *buf = g_strdup(rl_line_buffer);
+        g_autofree char *buf = g_strdup(rl_line_buffer);
 
         g_strfreev(list);
         list = NULL;
@@ -2717,8 +2719,6 @@ vshReadlineParse(const char *text, int state)
 
         vshCommandStringParse(NULL, buf, &partial);
 
-        VIR_FREE(buf);
-
         if (partial) {
             cmd = partial->def;
             partial->skipChecks = true;
@@ -2759,12 +2759,10 @@ vshReadlineParse(const char *text, int state)
                     (vshCompleterFilter(&completer_list, text) < 0 ||
                      virStringListMerge(&list, &completer_list) < 0)) {
                     g_strfreev(completer_list);
-                    vshCommandFree(partial);
                     goto cleanup;
                 }
             }
         }
-        vshCommandFree(partial);
     }
 
     if (list) {
-- 
2.26.2




More information about the libvir-list mailing list