From 743d5dbeb567358b319f33499ea8da95c47c6de5 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Sun, 9 Nov 2014 09:34:02 -0500 Subject: [PATCH] Debugger: Fix potential crash. VariablesView: - Check to ensure the stack frame actually does have a function object associated with it before attempting to use it, as this isn't always the case. --- .../gui/team_window/VariablesView.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp b/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp index 06a5e35089..d3189e85a4 100644 --- a/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp @@ -2839,7 +2839,14 @@ VariablesView::_AddExpressionNode(ExpressionInfo* info) void VariablesView::_RestoreExpressionNodes() { - FunctionID* id = fStackFrame->Function()->GetFunctionID(); + FunctionInstance* instance = fStackFrame->Function(); + if (instance == NULL) + return; + + FunctionID* id = instance->GetFunctionID(); + if (id == NULL) + return; + BReference idReference(id, true); ExpressionInfoEntry* entry = fExpressions->Lookup(FunctionKey(id)); @@ -2858,7 +2865,14 @@ void VariablesView::_SetExpressionNodeValue(ExpressionInfo* info, status_t result, Value* value) { - FunctionID* id = fStackFrame->Function()->GetFunctionID(); + FunctionInstance* instance = fStackFrame->Function(); + if (instance == NULL) + return; + + FunctionID* id = instance->GetFunctionID(); + if (id == NULL) + return; + BReference idReference(id, true); ExpressionInfoEntry* entry = fExpressions->Lookup(FunctionKey(id));