aboutsummaryrefslogtreecommitdiff
path: root/gdb/event-top.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2017-09-27 20:30:19 -0600
committerTom Tromey <tom@tromey.com>2017-09-29 20:46:43 -0600
commit606aae8a73177dde47ff01a6eb7ec883309bdfa6 (patch)
treedc8232245f167473682fb34f5e243b08c35ef45d /gdb/event-top.c
parentbd413795d364d3bed8dbb8c596cb45c82ed31041 (diff)
downloadgdb-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.c25
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. */