Browse Source

HackStudio: Don't crash when navigating backtrace with up/down keys

It's up to BacktraceModel::index() to validate its inputs.
Andreas Kling 5 years ago
parent
commit
18ff75e67b

+ 7 - 0
DevTools/HackStudio/Debugger/BacktraceModel.cpp

@@ -41,6 +41,13 @@ GUI::Variant BacktraceModel::data(const GUI::ModelIndex& index, Role role) const
     return {};
 }
 
+GUI::ModelIndex BacktraceModel::index(int row, int column, const GUI::ModelIndex&) const
+{
+    if (row < 0 || row >= static_cast<int>(m_frames.size()))
+        return {};
+    return create_index(row, column, &m_frames.at(row));
+}
+
 Vector<BacktraceModel::FrameInfo> BacktraceModel::create_backtrace(const DebugSession& debug_session, const PtraceRegisters& regs)
 {
     u32 current_ebp = regs.ebp;

+ 1 - 1
DevTools/HackStudio/Debugger/BacktraceModel.h

@@ -47,7 +47,7 @@ public:
     virtual GUI::Variant data(const GUI::ModelIndex& index, Role role = Role::Display) const override;
 
     virtual void update() override {}
-    virtual GUI::ModelIndex index(int row, int column = 0, const GUI::ModelIndex& = GUI::ModelIndex()) const override { return create_index(row, column, &m_frames.at(row)); }
+    virtual GUI::ModelIndex index(int row, int column, const GUI::ModelIndex&) const override;
 
     struct FrameInfo {
         String function_name;