Remove user_call_depth
authorTom Tromey <tom@tromey.com>
Mon, 1 May 2017 03:08:31 +0000 (21:08 -0600)
committerTom Tromey <tom@tromey.com>
Thu, 3 Aug 2017 13:59:04 +0000 (07:59 -0600)
This changes execute_user_command to remove user_call_depth, using the
size of user_args_stack instead.  This avoids a cleanup.

ChangeLog
2017-08-03  Tom Tromey  <tom@tromey.com>

* cli/cli-script.c (do_restore_user_call_depth): Remove.
(execute_user_command): Remove user_call_depth; use
user_args_stack's size instead.

gdb/ChangeLog
gdb/cli/cli-script.c

index f7ccc82fa1a1e98a09a8c8ca9574f99bca68db47..be5fd55e4ce74b6f29604305e6a46b501c7ba8c6 100644 (file)
@@ -1,3 +1,9 @@
+2017-08-03  Tom Tromey  <tom@tromey.com>
+
+       * cli/cli-script.c (do_restore_user_call_depth): Remove.
+       (execute_user_command): Remove user_call_depth; use
+       user_args_stack's size instead.
+
 2017-08-03  Tom Tromey  <tom@tromey.com>
 
        * top.h (in_user_command): Remove.
index 527540a201d4c05f164625483286650891ef38b1..36aa371d55dfc62979886a480ffd32c054c1db85 100644 (file)
@@ -372,16 +372,6 @@ execute_cmd_post_hook (struct cmd_list_element *c)
     }
 }
 
-/* Execute the command in CMD.  */
-static void
-do_restore_user_call_depth (void * call_depth)
-{      
-  int *depth = (int *) call_depth;
-
-  (*depth)--;
-}
-
-
 void
 execute_user_command (struct cmd_list_element *c, char *args)
 {
@@ -389,7 +379,6 @@ execute_user_command (struct cmd_list_element *c, char *args)
   struct command_line *cmdlines;
   struct cleanup *old_chain;
   enum command_control_type ret;
-  static int user_call_depth = 0;
   extern unsigned int max_user_call_depth;
 
   cmdlines = c->user_commands;
@@ -399,14 +388,12 @@ execute_user_command (struct cmd_list_element *c, char *args)
 
   scoped_user_args_level push_user_args (args);
 
-  if (++user_call_depth > max_user_call_depth)
+  if (user_args_stack.size () > max_user_call_depth)
     error (_("Max user call depth exceeded -- command aborted."));
 
-  old_chain = make_cleanup (do_restore_user_call_depth, &user_call_depth);
-
   /* Set the instream to 0, indicating execution of a
      user-defined function.  */
-  make_cleanup (do_restore_instream_cleanup, ui->instream);
+  old_chain = make_cleanup (do_restore_instream_cleanup, ui->instream);
   ui->instream = NULL;
 
   scoped_restore save_async = make_scoped_restore (&current_ui->async, 0);