From: Tom Tromey Date: Thu, 7 Sep 2023 15:04:37 +0000 (-0600) Subject: Use gdb_dir_up in linux_proc_attach_tgid_threads X-Git-Tag: binutils-2_42~746 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=596cd22cb10519f9baad6295fed13443d1ef86f9;p=thirdparty%2Fbinutils-gdb.git Use gdb_dir_up in linux_proc_attach_tgid_threads This changes linux_proc_attach_tgid_threads to use gdb_dir_up. This makes it robust against exceptions. Approved-By: Simon Marchi --- diff --git a/gdb/nat/linux-procfs.c b/gdb/nat/linux-procfs.c index 95ecae443e4..c7d8ba2bd67 100644 --- a/gdb/nat/linux-procfs.c +++ b/gdb/nat/linux-procfs.c @@ -275,7 +275,6 @@ void linux_proc_attach_tgid_threads (pid_t pid, linux_proc_attach_lwp_func attach_lwp) { - DIR *dir; char pathname[128]; int new_threads_found; int iterations; @@ -284,7 +283,7 @@ linux_proc_attach_tgid_threads (pid_t pid, return; xsnprintf (pathname, sizeof (pathname), "/proc/%ld/task", (long) pid); - dir = opendir (pathname); + gdb_dir_up dir (opendir (pathname)); if (dir == NULL) { warning (_("Could not open %s."), pathname); @@ -300,7 +299,7 @@ linux_proc_attach_tgid_threads (pid_t pid, struct dirent *dp; new_threads_found = 0; - while ((dp = readdir (dir)) != NULL) + while ((dp = readdir (dir.get ())) != NULL) { unsigned long lwp; @@ -321,10 +320,8 @@ linux_proc_attach_tgid_threads (pid_t pid, iterations = -1; } - rewinddir (dir); + rewinddir (dir.get ()); } - - closedir (dir); } /* See linux-procfs.h. */