mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-04-20 19:43:13 +00:00
Kernel: Bail out earlier from Process::lookup_stacks_directory
This commit is contained in:
committed by
Andreas Kling
parent
4260638121
commit
05381753c2
@@ -59,21 +59,20 @@ ErrorOr<void> Process::traverse_stacks_directory(FileSystemID fsid, Function<Err
|
||||
|
||||
ErrorOr<NonnullRefPtr<Inode>> Process::lookup_stacks_directory(const ProcFS& procfs, StringView name) const
|
||||
{
|
||||
ErrorOr<NonnullRefPtr<ProcFSProcessPropertyInode>> thread_stack_inode { ENOENT };
|
||||
auto maybe_needle = name.to_uint();
|
||||
if (!maybe_needle.has_value())
|
||||
return ENOENT;
|
||||
auto needle = maybe_needle.release_value();
|
||||
|
||||
// FIXME: Try to exit the loop earlier
|
||||
ErrorOr<NonnullRefPtr<ProcFSProcessPropertyInode>> thread_stack_inode { ENOENT };
|
||||
for_each_thread([&](const Thread& thread) {
|
||||
int tid = thread.tid().value();
|
||||
VERIFY(!(tid < 0));
|
||||
if (name.to_int() == tid) {
|
||||
auto maybe_inode = ProcFSProcessPropertyInode::try_create_for_thread_stack(procfs, thread.tid(), pid());
|
||||
if (maybe_inode.is_error()) {
|
||||
thread_stack_inode = maybe_inode.release_error();
|
||||
return;
|
||||
}
|
||||
|
||||
thread_stack_inode = maybe_inode.release_value();
|
||||
if (needle == (unsigned)tid) {
|
||||
thread_stack_inode = ProcFSProcessPropertyInode::try_create_for_thread_stack(procfs, thread.tid(), pid());
|
||||
return IterationDecision::Break;
|
||||
}
|
||||
return IterationDecision::Continue;
|
||||
});
|
||||
|
||||
if (thread_stack_inode.is_error())
|
||||
|
||||
Reference in New Issue
Block a user