diff options
author | Tom Tromey <tom@tromey.com> | 2018-12-29 12:42:18 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-12-30 08:54:13 -0700 |
commit | 95bc9f0bf06637cf9c1147008ac32d6b00c42707 (patch) | |
tree | 8af056bf84c73a05ff6c6c85068c90a5bf5f2e66 /gdb/event-top.c | |
parent | ecad3b215d34263968bb7c74701e3ca9483ac710 (diff) | |
download | gdb-95bc9f0bf06637cf9c1147008ac32d6b00c42707.zip gdb-95bc9f0bf06637cf9c1147008ac32d6b00c42707.tar.gz gdb-95bc9f0bf06637cf9c1147008ac32d6b00c42707.tar.bz2 |
Change input_handler to take a unique_xmalloc_ptr
This changes ui::input_handler to take a unique_xmalloc_ptr. This
clarifies the ownership transfer of input_handler's argument.
gdb/ChangeLog
2018-12-30 Tom Tromey <tom@tromey.com>
* event-top.h (command_line_handler): Update.
* top.c (class gdb_readline_wrapper_cleanup) <m_handler_orig>:
Update.
(gdb_readline_wrapper_line): Update.
* top.h (struct ui) <input_handler>: Take a unique_xmalloc_ptr.
(handle_line_of_input): Update.
* event-top.c: Update.
(gdb_readline_no_editing_callback): Update.
(command_line_handler): Take a unique_xmalloc_ptr.
(handle_line_of_input): Take a const char *.
(command_line_append_input_line): Take a const char *.
Diffstat (limited to 'gdb/event-top.c')
-rw-r--r-- | gdb/event-top.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/gdb/event-top.c b/gdb/event-top.c index 5852089..7eef55b 100644 --- a/gdb/event-top.c +++ b/gdb/event-top.c @@ -210,7 +210,7 @@ gdb_rl_callback_handler (char *rl) noexcept TRY { - ui->input_handler (rl); + ui->input_handler (gdb::unique_xmalloc_ptr<char> (rl)); } CATCH (ex, RETURN_MASK_ALL) { @@ -591,10 +591,10 @@ command_handler (const char *command) emulations, to CMD_LINE_BUFFER. Returns the command line if we have a whole command line ready to be processed by the command interpreter or NULL if the command line isn't complete yet (input - line ends in a backslash). Takes ownership of RL. */ + line ends in a backslash). */ static char * -command_line_append_input_line (struct buffer *cmd_line_buffer, char *rl) +command_line_append_input_line (struct buffer *cmd_line_buffer, const char *rl) { char *cmd; size_t len; @@ -615,9 +615,6 @@ command_line_append_input_line (struct buffer *cmd_line_buffer, char *rl) cmd = cmd_line_buffer->buffer; } - /* Allocated in readline. */ - xfree (rl); - return cmd; } @@ -643,7 +640,8 @@ command_line_append_input_line (struct buffer *cmd_line_buffer, char *rl) char * handle_line_of_input (struct buffer *cmd_line_buffer, - char *rl, int repeat, const char *annotation_suffix) + const char *rl, int repeat, + const char *annotation_suffix) { struct ui *ui = current_ui; int from_tty = ui->instream == ui->stdin_stream; @@ -746,13 +744,13 @@ handle_line_of_input (struct buffer *cmd_line_buffer, function. */ void -command_line_handler (char *rl) +command_line_handler (gdb::unique_xmalloc_ptr<char> &&rl) { struct buffer *line_buffer = get_command_line_buffer (); struct ui *ui = current_ui; char *cmd; - cmd = handle_line_of_input (line_buffer, rl, 1, "prompt"); + cmd = handle_line_of_input (line_buffer, rl.get (), 1, "prompt"); if (cmd == (char *) EOF) { /* stdin closed. The connection with the terminal is gone. @@ -846,7 +844,7 @@ gdb_readline_no_editing_callback (gdb_client_data client_data) buffer_grow_char (&line_buffer, '\0'); result = buffer_finish (&line_buffer); - ui->input_handler (result); + ui->input_handler (gdb::unique_xmalloc_ptr<char> (result)); } |