diff options
Diffstat (limited to 'toys/posix/ps.c')
-rw-r--r-- | toys/posix/ps.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/toys/posix/ps.c b/toys/posix/ps.c index fd9b54bc..7741dcd3 100644 --- a/toys/posix/ps.c +++ b/toys/posix/ps.c @@ -680,8 +680,11 @@ static int get_ps(struct dirtree *new) memset(slot, 0, sizeof(tb->slot)); tb->slot[SLOT_tid] = *slot = atol(new->name); - if (TT.threadparent && TT.threadparent->extra) - if (*slot == *(((struct carveup *)TT.threadparent->extra)->slot)) return 0; + if (TT.threadparent && TT.threadparent->extra) { + *slot = *(((struct carveup *)TT.threadparent->extra)->slot); + // Parent also shows up as a thread, discard duplicate + if (*slot == tb->slot[SLOT_tid]) return 0; + } fd = dirtree_parentfd(new); len = 2048; |