From 606aae8a73177dde47ff01a6eb7ec883309bdfa6 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 27 Sep 2017 20:30:19 -0600 Subject: [PATCH] Remove cleanup from display_gdb_prompt This removes a cleanup from display_gdb_prompt by using std::string. gdb/ChangeLog 2017-09-29 Tom Tromey * event-top.c (top_level_prompt): Return std::string. (display_gdb_prompt): Update. --- gdb/ChangeLog | 5 +++++ gdb/event-top.c | 25 +++++++++---------------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b112b02acb..48f1f894fd 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2017-09-29 Tom Tromey + + * event-top.c (top_level_prompt): Return std::string. + (display_gdb_prompt): Update. + 2017-09-29 Tom Tromey * unittests/common-utils-selftests.c (format): New function. diff --git a/gdb/event-top.c b/gdb/event-top.c index b1cc8b9794..54fe471f2c 100644 --- a/gdb/event-top.c +++ b/gdb/event-top.c @@ -48,7 +48,7 @@ /* readline defines this. */ #undef savestring -static char *top_level_prompt (void); +static std::string top_level_prompt (); /* Signal handlers. */ #ifdef SIGQUIT @@ -352,16 +352,13 @@ gdb_rl_callback_handler_reinstall (void) void display_gdb_prompt (const char *new_prompt) { - char *actual_gdb_prompt = NULL; - struct cleanup *old_chain; + std::string actual_gdb_prompt; annotate_display_prompt (); /* Reset the nesting depth used when trace-commands is set. */ reset_command_nest_depth (); - old_chain = make_cleanup (free_current_contents, &actual_gdb_prompt); - /* Do not call the python hook on an explicit prompt change as passed to this function, as this forms a secondary/local prompt, IE, displayed but not set. */ @@ -391,7 +388,6 @@ display_gdb_prompt (const char *new_prompt) if (current_ui->command_editing) gdb_rl_callback_handler_remove (); - do_cleanups (old_chain); return; } else if (ui->prompt_state == PROMPT_NEEDED) @@ -402,12 +398,12 @@ display_gdb_prompt (const char *new_prompt) } } else - actual_gdb_prompt = xstrdup (new_prompt); + actual_gdb_prompt = new_prompt; if (current_ui->command_editing) { gdb_rl_callback_handler_remove (); - gdb_rl_callback_handler_install (actual_gdb_prompt); + gdb_rl_callback_handler_install (actual_gdb_prompt.c_str ()); } /* new_prompt at this point can be the top of the stack or the one passed in. It can't be NULL. */ @@ -416,19 +412,16 @@ display_gdb_prompt (const char *new_prompt) /* Don't use a _filtered function here. It causes the assumed character position to be off, since the newline we read from the user is not accounted for. */ - fputs_unfiltered (actual_gdb_prompt, gdb_stdout); + fputs_unfiltered (actual_gdb_prompt.c_str (), gdb_stdout); gdb_flush (gdb_stdout); } - - do_cleanups (old_chain); } /* Return the top level prompt, as specified by "set prompt", possibly overriden by the python gdb.prompt_hook hook, and then composed - with the prompt prefix and suffix (annotations). The caller is - responsible for freeing the returned string. */ + with the prompt prefix and suffix (annotations). */ -static char * +static std::string top_level_prompt (void) { char *prompt; @@ -448,10 +441,10 @@ top_level_prompt (void) beginning. */ const char suffix[] = "\n\032\032prompt\n"; - return concat (prefix, prompt, suffix, (char *) NULL); + return std::string (prefix) + prompt + suffix; } - return xstrdup (prompt); + return prompt; } /* See top.h. */ -- 2.34.1