This is the mail archive of the gdb-cvs@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]

[binutils-gdb] breakpoint.c:commands_command_1 constification and cleanup


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=896b6bda6904765f36692d76a37b99c0412ca9ae

commit 896b6bda6904765f36692d76a37b99c0412ca9ae
Author: Pedro Alves <palves@redhat.com>
Date:   Tue Nov 8 15:26:43 2016 +0000

    breakpoint.c:commands_command_1 constification and cleanup
    
    This is constification needed for next patch.  Adjust
    commands_command_1 to use std::string too because the "arg" parameter
    is currently overwritten and then passed to make_cleanup.  The
    constification alone would trigger a compile error in the make_cleanup
    call otherwise (passing const char * to void * parameter).  Using
    std::string gets rid of the cleanup in the first place, resulting in
    simpler code.
    
    gdb/ChangeLog:
    2016-11-08  Pedro Alves  <palves@redhat.com>
    
    	* breakpoint.c (struct commands_info) <arg>: Constify.
    	(commands_command_1): Constify 'arg' parameter.  Use std::string
    	and string_printf.
    	(commands_from_control_command): Constify 'arg' parameter.
    	(map_breakpoint_numbers): Constify 'args' parameter.
    	* breakpoint.h (commands_from_control_command): Constify 'arg'
    	parameter.

Diff:
---
 gdb/ChangeLog    | 10 ++++++++++
 gdb/breakpoint.c | 42 +++++++++++++++++-------------------------
 gdb/breakpoint.h |  2 +-
 3 files changed, 28 insertions(+), 26 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index bc422e5..b71248a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,15 @@
 2016-11-08  Pedro Alves  <palves@redhat.com>
 
+	* breakpoint.c (struct commands_info) <arg>: Constify.
+	(commands_command_1): Constify 'arg' parameter.  Use std::string
+	and string_printf.
+	(commands_from_control_command): Constify 'arg' parameter.
+	(map_breakpoint_numbers): Constify 'args' parameter.
+	* breakpoint.h (commands_from_control_command): Constify 'arg'
+	parameter.
+
+2016-11-08  Pedro Alves  <palves@redhat.com>
+
 	* cli/cli-script.c (execute_control_command): Assume insert_args
 	never returns NULL.
 	(insert_args): Assume xmalloc never returns NULL.
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index ff2a53a..38262c1 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -102,8 +102,9 @@ static void disable_command (char *, int);
 
 static void enable_command (char *, int);
 
-static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
-						      void *),
+static void map_breakpoint_numbers (const char *,
+				    void (*) (struct breakpoint *,
+					      void *),
 				    void *);
 
 static void ignore_command (char *, int);
@@ -1338,7 +1339,7 @@ struct commands_info
   int from_tty;
 
   /* The breakpoint range spec.  */
-  char *arg;
+  const char *arg;
 
   /* Non-NULL if the body of the commands are being read from this
      already-parsed command.  */
@@ -1399,7 +1400,7 @@ do_map_commands_command (struct breakpoint *b, void *data)
 }
 
 static void
-commands_command_1 (char *arg, int from_tty, 
+commands_command_1 (const char *arg, int from_tty,
 		    struct command_line *control)
 {
   struct cleanup *cleanups;
@@ -1412,32 +1413,22 @@ commands_command_1 (char *arg, int from_tty,
      extra reference to the commands that we must clean up.  */
   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
 
+  std::string new_arg;
+
   if (arg == NULL || !*arg)
     {
       if (breakpoint_count - prev_breakpoint_count > 1)
-	arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
-			  breakpoint_count);
+	new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
+				 breakpoint_count);
       else if (breakpoint_count > 0)
-	arg = xstrprintf ("%d", breakpoint_count);
-      else
-	{
-	  /* So that we don't try to free the incoming non-NULL
-	     argument in the cleanup below.  Mapping breakpoint
-	     numbers will fail in this case.  */
-	  arg = NULL;
-	}
+	new_arg = string_printf ("%d", breakpoint_count);
     }
   else
-    /* The command loop has some static state, so we need to preserve
-       our argument.  */
-    arg = xstrdup (arg);
-
-  if (arg != NULL)
-    make_cleanup (xfree, arg);
+    new_arg = arg;
 
-  info.arg = arg;
+  info.arg = new_arg.c_str ();
 
-  map_breakpoint_numbers (arg, do_map_commands_command, &info);
+  map_breakpoint_numbers (info.arg, do_map_commands_command, &info);
 
   if (info.cmd == NULL)
     error (_("No breakpoints specified."));
@@ -1457,7 +1448,7 @@ commands_command (char *arg, int from_tty)
    This is used by cli-script.c to DTRT with breakpoint commands
    that are part of if and while bodies.  */
 enum command_control_type
-commands_from_control_command (char *arg, struct command_line *cmd)
+commands_from_control_command (const char *arg, struct command_line *cmd)
 {
   commands_command_1 (arg, 0, cmd);
   return simple_control;
@@ -14795,8 +14786,9 @@ ignore_command (char *args, int from_tty)
    whose numbers are given in ARGS.  */
 
 static void
-map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
-						      void *),
+map_breakpoint_numbers (const char *args,
+			void (*function) (struct breakpoint *,
+					  void *),
 			void *data)
 {
   int num;
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
index e2e15b6..8e215b6 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -1452,7 +1452,7 @@ extern void enable_breakpoints_after_startup (void);
    after they've already read the commands into a struct
    command_line.  */
 extern enum command_control_type commands_from_control_command
-  (char *arg, struct command_line *cmd);
+  (const char *arg, struct command_line *cmd);
 
 extern void clear_breakpoint_hit_counts (void);


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