diff options
author | Tom Tromey <tom@tromey.com> | 2017-09-27 20:30:19 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2017-09-29 20:46:43 -0600 |
commit | 606aae8a73177dde47ff01a6eb7ec883309bdfa6 (patch) | |
tree | dc8232245f167473682fb34f5e243b08c35ef45d /gdb/event-top.c | |
parent | bd413795d364d3bed8dbb8c596cb45c82ed31041 (diff) | |
download | gdb-606aae8a73177dde47ff01a6eb7ec883309bdfa6.zip gdb-606aae8a73177dde47ff01a6eb7ec883309bdfa6.tar.gz gdb-606aae8a73177dde47ff01a6eb7ec883309bdfa6.tar.bz2 |
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 <tom@tromey.com>
* event-top.c (top_level_prompt): Return std::string.
(display_gdb_prompt): Update.
Diffstat (limited to 'gdb/event-top.c')
-rw-r--r-- | gdb/event-top.c | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/gdb/event-top.c b/gdb/event-top.c index b1cc8b9..54fe471 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. */ |