cli-script: use unique_ptr to not leak next struct
[binutils-gdb.git] / gdb / cli / cli-setshow.c
index 35482e1c5cc6f45e0a0fc0e1a3213c24871f0040..5fd5fd15c6ad119f35f9aa83d731be5cf3975fdd 100644 (file)
@@ -550,10 +550,10 @@ do_set_command (const char *arg, int from_tty, struct cmd_list_element *c)
          p = p->prefix;
        }
 
-      /* Don't trigger any observer notification if prefixlist is not
+      /* Don't trigger any observer notification if subcommands is not
         setlist.  */
       i--;
-      if (cmds[i]->prefixlist != &setlist)
+      if (cmds[i]->subcommands != &setlist)
        {
          xfree (cmds);
          xfree (name);
@@ -714,7 +714,7 @@ do_show_command (const char *arg, int from_tty, struct cmd_list_element *c)
      versions of code to print the value out.  */
 
   if (uiout->is_mi_like_p ())
-    uiout->field_string ("value", val.c_str ());
+    uiout->field_string ("value", val);
   else
     {
       if (c->show_value_func != NULL)
@@ -740,7 +740,7 @@ cmd_show_list (struct cmd_list_element *list, int from_tty)
 
       /* If we find a prefix, run its list, prefixing our output by its
         prefix (with "show " skipped).  */
-      if (list->prefixlist && list->cmd_pointer == nullptr)
+      if (list->is_prefix () && !list->is_alias ())
        {
          ui_out_emit_tuple optionlist_emitter (uiout, "optionlist");
          std::string prefixname = list->prefixname ();
@@ -748,9 +748,9 @@ cmd_show_list (struct cmd_list_element *list, int from_tty)
 
          if (uiout->is_mi_like_p ())
            uiout->field_string ("prefix", new_prefix);
-         cmd_show_list (*list->prefixlist, from_tty);
+         cmd_show_list (*list->subcommands, from_tty);
        }
-      else if (list->theclass != no_set_class && list->cmd_pointer == nullptr)
+      else if (list->theclass != no_set_class && !list->is_alias ())
        {
          ui_out_emit_tuple option_emitter (uiout, "option");
 
@@ -758,9 +758,9 @@ cmd_show_list (struct cmd_list_element *list, int from_tty)
            {
              /* If we find a prefix, output it (with "show " skipped).  */
              std::string prefixname = list->prefix->prefixname ();
-             prefixname = (list->prefix->prefixlist == nullptr ? ""
+             prefixname = (!list->prefix->is_prefix () ? ""
                            : strstr (prefixname.c_str (), "show ") + 5);
-             uiout->text (prefixname.c_str ());
+             uiout->text (prefixname);
            }
          uiout->field_string ("name", list->name);
          uiout->text (":  ");