summaryrefslogtreecommitdiff
path: root/packages/ltrace/0.7.3/0007-glibc-2.24.patch
blob: 037376f8bf8c4dd5a19dfd9555f91d4268bcbe24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
---
 sysdeps/linux-gnu/proc.c |   16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

--- a/sysdeps/linux-gnu/proc.c
+++ b/sysdeps/linux-gnu/proc.c
@@ -240,14 +240,18 @@
 	size_t alloc = 0;
 
 	while (1) {
-		struct dirent entry;
 		struct dirent *result;
-		if (readdir_r(d, &entry, &result) != 0) {
-			free(tasks);
-			return -1;
-		}
-		if (result == NULL)
+
+		errno = 0;
+		result = readdir(d);
+		if (result == NULL) {
+			if (errno) {
+				free(tasks);
+				closedir(d);
+				return -1;
+			}
 			break;
+		}
 		if (result->d_type == DT_DIR && all_digits(result->d_name)) {
 			pid_t npid = atoi(result->d_name);
 			if (n >= alloc) {