summaryrefslogtreecommitdiff
path: root/Userland/Applications
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Applications')
-rw-r--r--Userland/Applications/SystemMonitor/ProcessModel.cpp8
-rw-r--r--Userland/Applications/SystemMonitor/ProcessModel.h4
2 files changed, 8 insertions, 4 deletions
diff --git a/Userland/Applications/SystemMonitor/ProcessModel.cpp b/Userland/Applications/SystemMonitor/ProcessModel.cpp
index 98f31612de..03322e6d24 100644
--- a/Userland/Applications/SystemMonitor/ProcessModel.cpp
+++ b/Userland/Applications/SystemMonitor/ProcessModel.cpp
@@ -344,7 +344,9 @@ GUI::ModelIndex ProcessModel::index(int row, int column, GUI::ModelIndex const&
if (row >= static_cast<int>(m_processes.size()))
return {};
auto corresponding_thread = m_processes[row].main_thread();
- return create_index(row, column, corresponding_thread.ptr());
+ if (!corresponding_thread.has_value())
+ return {};
+ return create_index(row, column, corresponding_thread.release_value().ptr());
}
// Thread under process.
auto const& parent_thread = *static_cast<Thread const*>(parent.internal_data());
@@ -375,8 +377,10 @@ GUI::ModelIndex ProcessModel::parent_index(GUI::ModelIndex const& index) const
return {};
// FIXME: We can't use first_matching here (not even a const version) because Optional cannot contain references.
auto const& parent = thread.current_state.process;
+ if (!parent.main_thread().has_value())
+ return {};
- return create_index(m_processes.find_first_index(parent).release_value(), index.column(), parent.main_thread().ptr());
+ return create_index(m_processes.find_first_index(parent).release_value(), index.column(), parent.main_thread().value().ptr());
}
Vector<GUI::ModelIndex> ProcessModel::matches(StringView searching, unsigned flags, GUI::ModelIndex const&)
diff --git a/Userland/Applications/SystemMonitor/ProcessModel.h b/Userland/Applications/SystemMonitor/ProcessModel.h
index 93f7618f46..d8daecbeef 100644
--- a/Userland/Applications/SystemMonitor/ProcessModel.h
+++ b/Userland/Applications/SystemMonitor/ProcessModel.h
@@ -210,9 +210,9 @@ private:
return this->pid == other.pid;
}
- NonnullRefPtr<Thread> main_thread() const
+ Optional<NonnullRefPtr<Thread>> main_thread() const
{
- return *threads.first_matching([this](auto const thread) { return thread->current_state.tid == pid; }).value();
+ return threads.first_matching([this](auto const thread) { return thread->current_state.tid == pid; });
}
// Return anything but the main thread; therefore, valid indices are anything up to threads.size()-1 exclusive.