aboutsummaryrefslogtreecommitdiff
path: root/gdb/common
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-10-27 12:23:44 -0600
committerTom Tromey <tom@tromey.com>2018-11-09 15:47:45 -0700
commit2179fbc36d23f29a83fb3dfcac0fc7d1fb31b8e8 (patch)
tree25112de3c1340c90ca19cefb2dbf5ab5877b6a96 /gdb/common
parent9c122c7f9c8260d2cceb1e8f29d69607531f43ba (diff)
downloadfsf-binutils-gdb-2179fbc36d23f29a83fb3dfcac0fc7d1fb31b8e8.zip
fsf-binutils-gdb-2179fbc36d23f29a83fb3dfcac0fc7d1fb31b8e8.tar.gz
fsf-binutils-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.h19
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