mirror of
https://github.com/sstefani/mtrace.git
synced 2026-07-30 16:26:14 +08:00
fix process attach
This commit is contained in:
parent
b58a41680a
commit
dc6b85bd8b
@ -163,14 +163,14 @@ int process_tasks(pid_t pid, pid_t ** ret_tasks, size_t *ret_n)
|
|||||||
for(;;) {
|
for(;;) {
|
||||||
struct dirent *result;
|
struct dirent *result;
|
||||||
|
|
||||||
|
errno = 0;
|
||||||
result = readdir(d);
|
result = readdir(d);
|
||||||
if (!result) {
|
|
||||||
free(tasks);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result == NULL)
|
if (!result) {
|
||||||
|
if (errno)
|
||||||
|
goto fail;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (result->d_type == DT_DIR && all_digits(result->d_name)) {
|
if (result->d_type == DT_DIR && all_digits(result->d_name)) {
|
||||||
pid_t npid = atoi(result->d_name);
|
pid_t npid = atoi(result->d_name);
|
||||||
@ -181,10 +181,9 @@ int process_tasks(pid_t pid, pid_t ** ret_tasks, size_t *ret_n)
|
|||||||
alloc = n > 0 ? (2 * n) : 8;
|
alloc = n > 0 ? (2 * n) : 8;
|
||||||
|
|
||||||
ntasks = realloc(tasks, sizeof(*tasks) * alloc);
|
ntasks = realloc(tasks, sizeof(*tasks) * alloc);
|
||||||
if (!ntasks) {
|
if (!ntasks)
|
||||||
free(tasks);
|
goto fail;
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
tasks = ntasks;
|
tasks = ntasks;
|
||||||
}
|
}
|
||||||
tasks[n++] = npid;
|
tasks[n++] = npid;
|
||||||
@ -197,6 +196,14 @@ int process_tasks(pid_t pid, pid_t ** ret_tasks, size_t *ret_n)
|
|||||||
*ret_n = n;
|
*ret_n = n;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
fail:
|
||||||
|
free(tasks);
|
||||||
|
closedir(d);
|
||||||
|
|
||||||
|
*ret_tasks = NULL;
|
||||||
|
*ret_n = 0;
|
||||||
|
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* On native 64-bit system, we need to be careful when handling cross
|
/* On native 64-bit system, we need to be careful when handling cross
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user