This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] [mi] mi_cmd_var_update cleanup


Hi,

no functionality change but submitting it due to patch dependencies.
(23 - lines, 10 + lines, excl. empty ones)

As it is not just a formatting change it is not checked in as [obv].

No regressions on {x86_64,i686}-fedora-linux-gnu.


Thanks,
Jan


2009-07-09  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Tidy up the code.
	* mi-cmd-var.c (mi_cmd_var_update): Remove variable nv.  Move variables
	var, rootlist and cr to their local sub-block.  Move the
	make_cleanup_ui_out_tuple_begin_end, make_cleanup_ui_out_list_begin_end
	and do_cleanups calls to the common base block.  Remove the zero NV
	check.

--- a/gdb/mi/mi-cmd-var.c
+++ b/gdb/mi/mi-cmd-var.c
@@ -569,12 +569,8 @@ mi_cmd_var_assign (char *command, char **argv, int argc)
 void
 mi_cmd_var_update (char *command, char **argv, int argc)
 {
-  struct varobj *var;
-  struct varobj **rootlist;
-  struct varobj **cr;
   struct cleanup *cleanup;
   char *name;
-  int nv;
   enum print_values print_values;
 
   if (argc != 1 && argc != 2)
@@ -590,54 +586,51 @@ mi_cmd_var_update (char *command, char **argv, int argc)
   else
     print_values = PRINT_NO_VALUES;
 
+  if (mi_version (uiout) <= 1)
+    cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "changelist");
+  else
+    cleanup = make_cleanup_ui_out_list_begin_end (uiout, "changelist");
+
   /* Check if the parameter is a "*" which means that we want
      to update all variables */
 
   if ((*name == '*' || *name == '@') && (*(name + 1) == '\0'))
     {
-      nv = varobj_list (&rootlist);
-      cleanup = make_cleanup (xfree, rootlist);
-      if (mi_version (uiout) <= 1)
-        make_cleanup_ui_out_tuple_begin_end (uiout, "changelist");
-      else
-        make_cleanup_ui_out_list_begin_end (uiout, "changelist");
-      if (nv <= 0)
-	{
-	  do_cleanups (cleanup);
-	  return;
-	}
+      struct varobj **rootlist, **cr;
+
+      varobj_list (&rootlist);
+      make_cleanup (xfree, rootlist);
+
       for (cr = rootlist; *cr != NULL; cr++)
 	{
 	  int thread_id = varobj_get_thread_id (*cr);
 	  int thread_stopped = 0;
+
 	  if (thread_id == -1 && is_stopped (inferior_ptid))
 	    thread_stopped = 1;
 	  else
-	    {	      
+	    {
 	      struct thread_info *tp = find_thread_id (thread_id);
 	      if (tp)
 		thread_stopped = is_stopped (tp->ptid);
 	      else
 		thread_stopped = 1;
 	    }
+
 	  if (thread_stopped)
 	    if (*name == '*' || varobj_floating_p (*cr))
 	      varobj_update_one (*cr, print_values, 0 /* implicit */);
 	}
-      do_cleanups (cleanup);
     }
   else
     {
       /* Get varobj handle, if a valid var obj name was specified */
-      var = varobj_get_handle (name);
+      struct varobj *var = varobj_get_handle (name);
 
-      if (mi_version (uiout) <= 1)
-        cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "changelist");
-      else
-        cleanup = make_cleanup_ui_out_list_begin_end (uiout, "changelist");
       varobj_update_one (var, print_values, 1 /* explicit */);
-      do_cleanups (cleanup);
     }
+
+  do_cleanups (cleanup);
 }
 
 /* Helper for mi_cmd_var_update().  */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]