diff options
author | Tom Tromey <tom@tromey.com> | 2018-10-27 12:23:44 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-11-09 15:47:45 -0700 |
commit | 2179fbc36d23f29a83fb3dfcac0fc7d1fb31b8e8 (patch) | |
tree | 25112de3c1340c90ca19cefb2dbf5ab5877b6a96 /gdb/common | |
parent | 9c122c7f9c8260d2cceb1e8f29d69607531f43ba (diff) | |
download | gdb-2179fbc36d23f29a83fb3dfcac0fc7d1fb31b8e8.zip gdb-2179fbc36d23f29a83fb3dfcac0fc7d1fb31b8e8.tar.gz gdb-2179fbc36d23f29a83fb3dfcac0fc7d1fb31b8e8.tar.bz2 |
Return scoped_fd from open_source_file and find_and_open_source
This changes open_source_file and find_and_open_source to return
scoped_fd, then updates the callers as appropriate, including using
scoped_fd::to_file.
Tested by the buildbot.
gdb/ChangeLog
2018-11-09 Tom Tromey <tom@tromey.com>
* common/scoped_fd.h (class scoped_fd): Add move constructor and
move assignment operator.
* psymtab.c (psymtab_to_fullname): Update.
* source.h (open_source_file): Return scoped_fd.
(find_and_open_source): Likewise.
* source.c (open_source_file): Return scoped_fd.
(get_filename_and_charpos): Update.
(print_source_lines_base): Update. Use scoped_fd::to_file.
(forward_search_command): Likewise.
(reverse_search_command): Likewise.
(find_and_open_source): Return scoped_fd.
* tui/tui-source.c (tui_set_source_content): Update. Use
gdb_file_up.
Diffstat (limited to 'gdb/common')
-rw-r--r-- | gdb/common/scoped_fd.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/gdb/common/scoped_fd.h b/gdb/common/scoped_fd.h index d20e18a..99fcfac 100644 --- a/gdb/common/scoped_fd.h +++ b/gdb/common/scoped_fd.h @@ -29,12 +29,31 @@ class scoped_fd { public: explicit scoped_fd (int fd = -1) noexcept : m_fd (fd) {} + + scoped_fd (scoped_fd &&other) + : m_fd (other.m_fd) + { + other.m_fd = -1; + } + ~scoped_fd () { if (m_fd >= 0) close (m_fd); } + scoped_fd &operator= (scoped_fd &&other) + { + if (m_fd != other.m_fd) + { + if (m_fd >= 0) + close (m_fd); + m_fd = other.m_fd; + other.m_fd = -1; + } + return *this; + } + DISABLE_COPY_AND_ASSIGN (scoped_fd); int release () noexcept |