diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 466f382592..bec15840f1 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -785,10 +785,7 @@ void Process::set_tty(TTY* tty) KResult Process::start_tracing_from(ProcessID tracer) { - auto thread_tracer = ThreadTracer::create(tracer); - if (!thread_tracer) - return ENOMEM; - m_tracer = move(thread_tracer); + m_tracer = TRY(ThreadTracer::try_create(tracer)); return KSuccess; } diff --git a/Kernel/ThreadTracer.h b/Kernel/ThreadTracer.h index c7a66a1e90..beec018b5c 100644 --- a/Kernel/ThreadTracer.h +++ b/Kernel/ThreadTracer.h @@ -15,7 +15,7 @@ namespace Kernel { class ThreadTracer { public: - static OwnPtr create(ProcessID tracer) { return try_make(tracer); } + static KResultOr> try_create(ProcessID tracer) { return adopt_nonnull_own_or_enomem(new (nothrow) ThreadTracer(tracer)); } ProcessID tracer_pid() const { return m_tracer_pid; } bool has_pending_signal(u32 signal) const { return m_pending_signals & (1 << (signal - 1)); } @@ -34,9 +34,9 @@ public: return m_regs.value(); } +private: explicit ThreadTracer(ProcessID); -private: ProcessID m_tracer_pid { -1 }; // This is a bitmap for signals that are sent from the tracer to the tracee