From 5d10a2041eb843fd321ce1d850cf3e0df7648bc7 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Mon, 24 Jan 2022 20:00:46 -0500 Subject: gdb: add string_file::release method A common pattern for string_file is to want to move out the internal string buffer, because it is the result of the computation that we want to return. It is the reason why string_file::string returns a non-const reference, as explained in the comment. I think it would make sense to have a dedicated method for that instead and make string_file::string return a const reference. This allows removing the explicit std::move in the typical case. Note that compile_program::compute was missing a move, meaning that the resulting string was copied. With the new version, it's not possible to forget to move. Change-Id: Ieaefa35b73daa7930b2f3a26988b6e3b4121bb79 --- gdb/tui/tui-stack.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'gdb/tui/tui-stack.c') diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c index 0489a5f..be8ffbd 100644 --- a/gdb/tui/tui-stack.c +++ b/gdb/tui/tui-stack.c @@ -181,12 +181,14 @@ tui_locator_window::make_status_line () const string.puts (pc_buf); } + std::string string_val = string.release (); + if (string.size () < status_size) - string.puts (n_spaces (status_size - string.size ())); + string_val.append (status_size - string.size (), ' '); else if (string.size () > status_size) - string.string ().erase (status_size, string.size ()); + string_val.erase (status_size, string.size ()); - return std::move (string.string ()); + return string_val; } /* Get a printable name for the function at the address. The symbol -- cgit v1.1