From 2d81b349982daae463bd29a87e962dde6d099392 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 23 Jul 2019 15:37:18 -0600 Subject: [PATCH] Move "fullname" to tui_source_window The "fullname" field in tui_source_window_base is only used by one subclass. This patch moves the field to that subclass, and changes it to be a unique_xmalloc_ptr. gdb/ChangeLog 2019-09-20 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_base) <~tui_source_window_base>: Don't declare. : Remove. * tui/tui-winsource.c (~tui_source_window_base): Remove. * tui/tui-source.h (struct tui_source_window) : New member. * tui/tui-source.c (tui_source_window::set_contents): Update. (tui_source_window::location_matches_p) (tui_source_window::maybe_update): Update. --- gdb/ChangeLog | 12 ++++++++++++ gdb/tui/tui-source.c | 7 +++---- gdb/tui/tui-source.h | 3 +++ gdb/tui/tui-winsource.c | 5 ----- gdb/tui/tui-winsource.h | 5 +---- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3d322877df..9f7accd2f6 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,15 @@ +2019-09-20 Tom Tromey + + * tui/tui-winsource.h (struct tui_source_window_base) + <~tui_source_window_base>: Don't declare. + : Remove. + * tui/tui-winsource.c (~tui_source_window_base): Remove. + * tui/tui-source.h (struct tui_source_window) : New + member. + * tui/tui-source.c (tui_source_window::set_contents): Update. + (tui_source_window::location_matches_p) + (tui_source_window::maybe_update): Update. + 2019-09-20 Tom Tromey * tui/tui-winsource.h (~tui_source_element): Remove. diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c index c379173018..f70e053bdb 100644 --- a/gdb/tui/tui-source.c +++ b/gdb/tui/tui-source.c @@ -155,8 +155,7 @@ tui_source_window::set_contents (struct gdbarch *arch, title = s_filename; - xfree (fullname); - fullname = xstrdup (symtab_to_fullname (s)); + fullname = make_unique_xstrdup (symtab_to_fullname (s)); cur_line = 0; gdbarch = get_objfile_arch (SYMTAB_OBJFILE (s)); @@ -276,7 +275,7 @@ tui_source_window::location_matches_p (struct bp_location *loc, int line_no) return (content[line_no].line_or_addr.loa == LOA_LINE && content[line_no].line_or_addr.u.line_no == loc->line_number && loc->symtab != NULL - && filename_cmp (fullname, + && filename_cmp (fullname.get (), symtab_to_fullname (loc->symtab)) == 0); } @@ -308,7 +307,7 @@ tui_source_window::maybe_update (struct frame_info *fi, symtab_and_line sal, start_line = 1; bool source_already_displayed = (sal.symtab != 0 - && showing_source_p (fullname)); + && showing_source_p (fullname.get ())); struct tui_line_or_address l; diff --git a/gdb/tui/tui-source.h b/gdb/tui/tui-source.h index a7002123c9..30728e4214 100644 --- a/gdb/tui/tui-source.h +++ b/gdb/tui/tui-source.h @@ -76,6 +76,9 @@ private: in the current source window. */ bool line_is_displayed (int line) const; + /* It is the resolved form as returned by symtab_to_fullname. */ + gdb::unique_xmalloc_ptr fullname; + /* A token used to register and unregister an observer. */ gdb::observers::token m_observable; }; diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c index d5281193c0..8b507ed912 100644 --- a/gdb/tui/tui-winsource.c +++ b/gdb/tui/tui-winsource.c @@ -261,11 +261,6 @@ tui_source_window_base::tui_source_window_base (enum tui_win_type type) } -tui_source_window_base::~tui_source_window_base () -{ - xfree (fullname); -} - /* See tui-data.h. */ void diff --git a/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h index 64f0739e53..eca0bde4bb 100644 --- a/gdb/tui/tui-winsource.h +++ b/gdb/tui/tui-winsource.h @@ -78,7 +78,7 @@ struct tui_source_window_base : public tui_win_info { protected: explicit tui_source_window_base (enum tui_win_type type); - ~tui_source_window_base () override; + DISABLE_COPY_AND_ASSIGN (tui_source_window_base); void do_scroll_horizontal (int num_to_scroll) override; @@ -137,9 +137,6 @@ public: int horizontal_offset = 0; struct tui_line_or_address start_line_or_addr; - /* It is the resolved form as returned by symtab_to_fullname. */ - char *fullname = nullptr; - /* Architecture associated with code at this location. */ struct gdbarch *gdbarch = nullptr; -- 2.34.1