Make open_fds an std::vector
authorSimon Marchi <simon.marchi@polymtl.ca>
Fri, 17 Nov 2017 18:02:24 +0000 (13:02 -0500)
committerSimon Marchi <simon.marchi@ericsson.com>
Fri, 17 Nov 2017 18:03:34 +0000 (13:03 -0500)
Simple replacement of VEC with std::vector.

gdb/ChangeLog:

* common/filestuff.c: Include <algorithm>.
(open_fds): Change type to std::vector<int>.
(do_mark_open_fd): Adjust.
(unmark_fd_no_cloexec): Adjust.
(do_close): Adjust.

gdb/ChangeLog
gdb/common/filestuff.c

index 373ae85d09e436c897a4dcc3e0cb11d0bf493571..46de331eec31bd3e1b788fa027a3715a54319b5f 100644 (file)
@@ -1,3 +1,11 @@
+2017-11-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+       * common/filestuff.c: Include <algorithm>.
+       (open_fds): Change type to std::vector<int>.
+       (do_mark_open_fd): Adjust.
+       (unmark_fd_no_cloexec): Adjust.
+       (do_close): Adjust.
+
 2017-11-17  Simon Marchi  <simon.marchi@polymtl.ca>
 
        * breakpoint.c (output_thread_groups): Take an std::vector.
index 4b05884d3ac0acc270b3fe95f81eaef05556ea74..881ee278747f8e55b0f453488d56308c27158fa2 100644 (file)
@@ -23,6 +23,7 @@
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <algorithm>
 
 #ifdef USE_WIN32API
 #include <winsock2.h>
@@ -146,11 +147,10 @@ fdwalk (int (*func) (void *, int), void *arg)
 
 \f
 
-/* A VEC holding all the fds open when notice_open_fds was called.  We
-   don't use a hashtab because libiberty isn't linked into gdbserver;
-   and anyway we don't expect there to be many open fds.  */
+/* A vector holding all the fds open when notice_open_fds was called.  We
+   don't use a hashtab because we don't expect there to be many open fds.  */
 
-static VEC (int) *open_fds;
+static std::vector<int> open_fds;
 
 /* An fdwalk callback function used by notice_open_fds.  It puts the
    given file descriptor into the vec.  */
@@ -158,7 +158,7 @@ static VEC (int) *open_fds;
 static int
 do_mark_open_fd (void *ignore, int fd)
 {
-  VEC_safe_push (int, open_fds, fd);
+  open_fds.push_back (fd);
   return 0;
 }
 
@@ -183,18 +183,12 @@ mark_fd_no_cloexec (int fd)
 void
 unmark_fd_no_cloexec (int fd)
 {
-  int i, val;
+  auto it = std::remove (open_fds.begin (), open_fds.end (), fd);
 
-  for (i = 0; VEC_iterate (int, open_fds, i, val); ++i)
-    {
-      if (fd == val)
-       {
-         VEC_unordered_remove (int, open_fds, i);
-         return;
-       }
-    }
-
-  gdb_assert_not_reached (_("fd not found in open_fds"));
+  if (it != open_fds.end ())
+    open_fds.erase (it);
+  else
+    gdb_assert_not_reached (_("fd not found in open_fds"));
 }
 
 /* Helper function for close_most_fds that closes the file descriptor
@@ -203,9 +197,7 @@ unmark_fd_no_cloexec (int fd)
 static int
 do_close (void *ignore, int fd)
 {
-  int i, val;
-
-  for (i = 0; VEC_iterate (int, open_fds, i, val); ++i)
+  for (int val : open_fds)
     {
       if (fd == val)
        {
This page took 0.032943 seconds and 4 git commands to generate.