diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/dwarf2read.c | 6 |
2 files changed, 10 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index aaf4b89..c7cf410 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2017-06-19 Pedro Alves <palves@redhat.com> + + * dwarf2read.c (write_psymtabs_to_index): Construct file_closer + after gdb::unlinker. + 2017-06-19 Sergio Durigan Junior <sergiodj@redhat.com> * mi/mi-cm-env.c (_initialize_mi_cmd_env): Use getenv instead of diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index abe14b2..2369d4b 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -23776,8 +23776,12 @@ write_psymtabs_to_index (struct objfile *objfile, const char *dir) if (!out_file) error (_("Can't open `%s' for writing"), filename.c_str ()); - file_closer close_out_file (out_file); + /* Order matters here; we want FILE to be closed before FILENAME is + unlinked, because on MS-Windows one cannot delete a file that is + still open. (Don't call anything here that might throw until + file_closer is created.) */ gdb::unlinker unlink_file (filename.c_str ()); + file_closer close_out_file (out_file); mapped_symtab symtab; data_buf cu_list; |