From 992a70401ec229425ee75b2ad9b731f30d2de391 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 22 Oct 2019 13:32:39 -0600 Subject: [PATCH] Constify command_line_input This changes command_line_input to return a "const char *", which is appropriate because the memory is owned by command_line_input. Then it fixes up the users. I looked at making command_line_input transfer ownership to its caller instead, but this is complicated due to the way read_next_line is called, so I decided against it. Tested by rebuilding. gdb/ChangeLog 2019-11-08 Tom Tromey * top.c (read_command_file): Update. (command_line_input): Make return type const. * python/py-gdb-readline.c: Update. * linespec.c (decode_line_2): Update. * defs.h (command_line_input): Make return type const. * cli/cli-script.c (read_next_line): Make return type const. * ada-lang.c (get_selections): Update. Change-Id: I27e6c9477fd1005ab5b16e0d337e4c015b6e6248 --- gdb/ChangeLog | 10 ++++++++++ gdb/ada-lang.c | 2 +- gdb/cli/cli-script.c | 6 +++--- gdb/defs.h | 2 +- gdb/linespec.c | 2 +- gdb/python/py-gdb-readline.c | 3 ++- gdb/top.c | 4 ++-- 7 files changed, 20 insertions(+), 9 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f43d3a5aed..f5c8a76c0f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2019-11-08 Tom Tromey + + * top.c (read_command_file): Update. + (command_line_input): Make return type const. + * python/py-gdb-readline.c: Update. + * linespec.c (decode_line_2): Update. + * defs.h (command_line_input): Make return type const. + * cli/cli-script.c (read_next_line): Make return type const. + * ada-lang.c (get_selections): Update. + 2019-11-06 Christian Biesinger * linux-tdep.c (linux_info_proc): Use strtok_r instead of strtok. diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 0bddc9e8b0..2935df52a2 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -3273,7 +3273,7 @@ static int get_selections (int *choices, int n_choices, int max_results, int is_all_choice, const char *annotation_suffix) { - char *args; + const char *args; const char *prompt; int n_chosen; int first_choice = is_all_choice ? 2 : 1; diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c index 8abd48c678..316aca0f27 100644 --- a/gdb/cli/cli-script.c +++ b/gdb/cli/cli-script.c @@ -50,7 +50,7 @@ recurse_read_control_structure static void do_define_command (const char *comname, int from_tty, const counted_command_line *commands); -static char *read_next_line (void); +static const char *read_next_line (); /* Level of control structure when reading. */ static int control_level; @@ -890,8 +890,8 @@ user_args::insert_args (const char *line) const recurse_read_control_structure whenever we need to read commands from stdin. */ -static char * -read_next_line (void) +static const char * +read_next_line () { struct ui *ui = current_ui; char *prompt_ptr, control_prompt[256]; diff --git a/gdb/defs.h b/gdb/defs.h index f12ba366cc..5d68be2a05 100644 --- a/gdb/defs.h +++ b/gdb/defs.h @@ -306,7 +306,7 @@ typedef void initialize_file_ftype (void); extern char *gdb_readline_wrapper (const char *); -extern char *command_line_input (const char *, const char *); +extern const char *command_line_input (const char *, const char *); extern void print_prompt (void); diff --git a/gdb/linespec.c b/gdb/linespec.c index fdbb670ed7..9b7a8c9715 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -1489,7 +1489,7 @@ decode_line_2 (struct linespec_state *self, std::vector *result, const char *select_mode) { - char *args; + const char *args; const char *prompt; int i; std::vector filters; diff --git a/gdb/python/py-gdb-readline.c b/gdb/python/py-gdb-readline.c index ec4ff9e13c..dcf3b83430 100644 --- a/gdb/python/py-gdb-readline.c +++ b/gdb/python/py-gdb-readline.c @@ -37,7 +37,8 @@ gdbpy_readline_wrapper (FILE *sys_stdin, FILE *sys_stdout, #endif { int n; - char *p = NULL, *q; + const char *p = NULL; + char *q; try { diff --git a/gdb/top.c b/gdb/top.c index a443159e3e..08c742548b 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -420,7 +420,7 @@ read_command_file (FILE *stream) while (ui->instream != NULL && !feof (ui->instream)) { - char *command; + const char *command; /* Get a command-line. This calls the readline package. */ command = command_line_input (NULL, NULL); @@ -1210,7 +1210,7 @@ gdb_safe_append_history (void) This routine either uses fancy command line editing or simple input as the user has requested. */ -char * +const char * command_line_input (const char *prompt_arg, const char *annotation_suffix) { static struct buffer cmd_line_buffer;