diff options
-rw-r--r-- | gdb/event-top.c | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/gdb/event-top.c b/gdb/event-top.c index 1498470..f0a3f0d 100644 --- a/gdb/event-top.c +++ b/gdb/event-top.c @@ -36,7 +36,6 @@ #include "gdbcmd.h" /* for dont_repeat() */ #include "annotate.h" #include "maint.h" -#include "gdbsupport/buffer.h" #include "ser-event.h" #include "gdbsupport/gdb_select.h" #include "gdbsupport/gdb-sigmask.h" @@ -868,12 +867,9 @@ void gdb_readline_no_editing_callback (gdb_client_data client_data) { int c; - char *result; - struct buffer line_buffer; + std::string line_buffer; struct ui *ui = current_ui; - buffer_init (&line_buffer); - FILE *stream = ui->instream != nullptr ? ui->instream : ui->stdin_stream; gdb_assert (stream != nullptr); @@ -893,32 +889,28 @@ gdb_readline_no_editing_callback (gdb_client_data client_data) if (c == EOF) { - if (line_buffer.used_size > 0) + if (!line_buffer.empty ()) { /* The last line does not end with a newline. Return it, and if we are called again fgetc will still return EOF and we'll return NULL then. */ break; } - xfree (buffer_finish (&line_buffer)); ui->input_handler (NULL); return; } if (c == '\n') { - if (line_buffer.used_size > 0 - && line_buffer.buffer[line_buffer.used_size - 1] == '\r') - line_buffer.used_size--; + if (!line_buffer.empty () && line_buffer.back () == '\r') + line_buffer.pop_back (); break; } - buffer_grow_char (&line_buffer, c); + line_buffer += c; } - buffer_grow_char (&line_buffer, '\0'); - result = buffer_finish (&line_buffer); - ui->input_handler (gdb::unique_xmalloc_ptr<char> (result)); + ui->input_handler (make_unique_xstrdup (line_buffer.c_str ())); } |