summaryrefslogtreecommitdiff
path: root/Kernel/ProcessGroup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel/ProcessGroup.cpp')
-rw-r--r--Kernel/ProcessGroup.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/Kernel/ProcessGroup.cpp b/Kernel/ProcessGroup.cpp
index 609906dc12..086cf3491a 100644
--- a/Kernel/ProcessGroup.cpp
+++ b/Kernel/ProcessGroup.cpp
@@ -24,27 +24,24 @@ ProcessGroup::~ProcessGroup()
});
}
-RefPtr<ProcessGroup> ProcessGroup::try_create(ProcessGroupID pgid)
+KResultOr<NonnullRefPtr<ProcessGroup>> ProcessGroup::try_create(ProcessGroupID pgid)
{
- auto process_group = adopt_ref_if_nonnull(new (nothrow) ProcessGroup(pgid));
- if (!process_group)
- return {};
+ auto process_group = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) ProcessGroup(pgid)));
process_groups().with([&](auto& groups) {
groups.prepend(*process_group);
});
return process_group;
}
-RefPtr<ProcessGroup> ProcessGroup::try_find_or_create(ProcessGroupID pgid)
+KResultOr<NonnullRefPtr<ProcessGroup>> ProcessGroup::try_find_or_create(ProcessGroupID pgid)
{
- return process_groups().with([&](auto& groups) -> RefPtr<ProcessGroup> {
+ return process_groups().with([&](auto& groups) -> KResultOr<NonnullRefPtr<ProcessGroup>> {
for (auto& group : groups) {
if (group.pgid() == pgid)
- return &group;
+ return group;
}
- auto process_group = adopt_ref_if_nonnull(new (nothrow) ProcessGroup(pgid));
- if (process_group)
- groups.prepend(*process_group);
+ auto process_group = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) ProcessGroup(pgid)));
+ groups.prepend(*process_group);
return process_group;
});
}