Remove two more uses of make_cleanup_close
authorTom Tromey <tom@tromey.com>
Thu, 7 Jun 2018 22:20:12 +0000 (16:20 -0600)
committerTom Tromey <tom@tromey.com>
Sat, 9 Jun 2018 22:09:52 +0000 (16:09 -0600)
This removes two more uses of make_cleanup_close, replacing them with
relatively straightforward uses of scoped_fd.

Tested by the buildbot.

gdb/ChangeLog
2018-06-09  Tom Tromey  <tom@tromey.com>

* source.c (reverse_search_command, forward_search_command): Use
scoped_fd.

gdb/ChangeLog
gdb/source.c

index 52337042f1dc6c98826ae94ef99fb6704dd914a9..1ff0e165fa2ea04d33bb98f638b2b0df476648a6 100644 (file)
@@ -1,3 +1,8 @@
+2018-06-09  Tom Tromey  <tom@tromey.com>
+
+       * source.c (reverse_search_command, forward_search_command): Use
+       scoped_fd.
+
 2018-06-09  Tom Tromey  <tom@tromey.com>
 
        * serial.c (serial_ops_p): Remove typedef.  Don't declare VEC.
index 5e50f425f3bb2f7778af5a0355167bbeed1be855..cc5c46d0a7b1d7f53ec311e87fbdb8837141f8a9 100644 (file)
@@ -1539,10 +1539,8 @@ static void
 forward_search_command (const char *regex, int from_tty)
 {
   int c;
-  int desc;
   int line;
   char *msg;
-  struct cleanup *cleanups;
 
   line = last_line_listed + 1;
 
@@ -1553,22 +1551,21 @@ forward_search_command (const char *regex, int from_tty)
   if (current_source_symtab == 0)
     select_source_symtab (0);
 
-  desc = open_source_file (current_source_symtab);
-  if (desc < 0)
+  scoped_fd desc (open_source_file (current_source_symtab));
+  if (desc.get () < 0)
     perror_with_name (symtab_to_filename_for_display (current_source_symtab));
-  cleanups = make_cleanup_close (desc);
 
   if (current_source_symtab->line_charpos == 0)
-    find_source_lines (current_source_symtab, desc);
+    find_source_lines (current_source_symtab, desc.get ());
 
   if (line < 1 || line > current_source_symtab->nlines)
     error (_("Expression not found"));
 
-  if (lseek (desc, current_source_symtab->line_charpos[line - 1], 0) < 0)
+  if (lseek (desc.get (), current_source_symtab->line_charpos[line - 1], 0)
+      < 0)
     perror_with_name (symtab_to_filename_for_display (current_source_symtab));
 
-  discard_cleanups (cleanups);
-  gdb_file_up stream (fdopen (desc, FDOPEN_MODE));
+  gdb_file_up stream (fdopen (desc.release (), FDOPEN_MODE));
   clearerr (stream.get ());
   while (1)
     {
@@ -1624,10 +1621,8 @@ static void
 reverse_search_command (const char *regex, int from_tty)
 {
   int c;
-  int desc;
   int line;
   char *msg;
-  struct cleanup *cleanups;
 
   line = last_line_listed - 1;
 
@@ -1638,22 +1633,21 @@ reverse_search_command (const char *regex, int from_tty)
   if (current_source_symtab == 0)
     select_source_symtab (0);
 
-  desc = open_source_file (current_source_symtab);
-  if (desc < 0)
+  scoped_fd desc (open_source_file (current_source_symtab));
+  if (desc.get () < 0)
     perror_with_name (symtab_to_filename_for_display (current_source_symtab));
-  cleanups = make_cleanup_close (desc);
 
   if (current_source_symtab->line_charpos == 0)
-    find_source_lines (current_source_symtab, desc);
+    find_source_lines (current_source_symtab, desc.get ());
 
   if (line < 1 || line > current_source_symtab->nlines)
     error (_("Expression not found"));
 
-  if (lseek (desc, current_source_symtab->line_charpos[line - 1], 0) < 0)
+  if (lseek (desc.get (), current_source_symtab->line_charpos[line - 1], 0)
+      < 0)
     perror_with_name (symtab_to_filename_for_display (current_source_symtab));
 
-  discard_cleanups (cleanups);
-  gdb_file_up stream (fdopen (desc, FDOPEN_MODE));
+  gdb_file_up stream (fdopen (desc.release (), FDOPEN_MODE));
   clearerr (stream.get ());
   while (line > 1)
     {