aboutsummaryrefslogtreecommitdiff
path: root/gdb/psymtab.c
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/psymtab.c
parent9c122c7f9c8260d2cceb1e8f29d69607531f43ba (diff)
downloadgdb-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/psymtab.c')
-rw-r--r--gdb/psymtab.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 915e4fb..6d76e8d 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -1129,12 +1129,11 @@ psymtab_to_fullname (struct partial_symtab *ps)
if (ps->fullname == NULL)
{
gdb::unique_xmalloc_ptr<char> fullname;
- int fd = find_and_open_source (ps->filename, ps->dirname, &fullname);
+ scoped_fd fd = find_and_open_source (ps->filename, ps->dirname,
+ &fullname);
ps->fullname = fullname.release ();
- if (fd >= 0)
- close (fd);
- else
+ if (fd.get () < 0)
{
/* rewrite_source_path would be applied by find_and_open_source, we
should report the pathname where GDB tried to find the file. */